Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Upgrade React from `b45bb335-20251211` to `bcf97c75-20251215` by nextjs-bot · Pull Request #87200 · vercel/next.js · GitHub
Skip to content

Upgrade React from b45bb335-20251211 to bcf97c75-20251215 - #87200

Closed
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215
Closed

Upgrade React from b45bb335-20251211 to bcf97c75-20251215#87200
nextjs-bot wants to merge 6 commits into
canaryfrom
update/react/19.3.0-canary-bcf97c75-20251215

Conversation

@nextjs-botnextjs-bot added type: react-sync CI approved create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue was opened via the examples template. tests type: next labels Dec 15, 2025
@nextjs-bot

Copy link
Copy Markdown
ContributorAuthor

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
buildDuration18.1s14.8sN/A
buildDurationCached13.7s10.8sN/A
nodeModulesSize457 MB457 MB⚠️ +514 B
nextStartRea..uration (ms)711ms712msN/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
2086.HASH.js gzip169 B169 B
2161-HASH.js gzip5.39 kB5.41 kBN/A
2747-HASH.js gzip4.48 kB4.46 kBN/A
4322-HASH.js gzip52.9 kB52.7 kBN/A
ec793fe8-HASH.js gzip62.3 kB62.3 kBN/A
framework-HASH.js gzip59.8 kB59.8 kBN/A
main-app-HASH.js gzip251 B253 BN/A
main-HASH.js gzip38.2 kB38.5 kB⚠️ +385 B
webpack-HASH.js gzip1.68 kB1.69 kBN/A
Overall change38.3 kB38.7 kB⚠️ +385 B
Legacy Client Bundles (polyfills)
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
polyfills-HASH.js gzip39.4 kB39.4 kB
Overall change39.4 kB39.4 kB
Client Pages
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_app-HASH.js gzip194 B193 BN/A
_error-HASH.js gzip182 B182 B
css-HASH.js gzip336 B335 BN/A
dynamic-HASH.js gzip1.8 kB1.8 kBN/A
edge-ssr-HASH.js gzip256 B256 B
head-HASH.js gzip352 B349 BN/A
hooks-HASH.js gzip385 B384 BN/A
image-HASH.js gzip580 B580 B
index-HASH.js gzip259 B258 BN/A
link-HASH.js gzip2.5 kB2.51 kBN/A
routerDirect..HASH.js gzip319 B317 BN/A
script-HASH.js gzip385 B387 BN/A
withRouter-HASH.js gzip316 B315 BN/A
1afbb74e6ecf..834.css gzip106 B106 B
Overall change1.12 kB1.12 kB
Client Build Manifests
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
_buildManifest.js gzip738 B738 B
Overall change738 B738 B
Rendered Page Sizes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
index.html gzip523 B525 BN/A
link.html gzip538 B538 B
withRouter.html gzip520 B520 B
Overall change1.06 kB1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
edge-ssr.js gzip124 kB124 kB⚠️ +319 B
page.js gzip236 kB231 kBN/A
Overall change124 kB124 kB⚠️ +319 B
Middleware size Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
middleware-b..fest.js gzip653 B654 BN/A
middleware-r..fest.js gzip155 B156 BN/A
middleware.js gzip32.7 kB32.9 kB⚠️ +221 B
edge-runtime..pack.js gzip846 B846 B
Overall change33.5 kB33.8 kB⚠️ +221 B
Next Runtimes
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
app-page-exp...dev.js gzip301 kB301 kB
app-page-exp..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip301 kB301 kBN/A
app-page-tur..prod.js gzip155 kB155 kBN/A
app-page-tur...dev.js gzip298 kB298 kB
app-page-tur..prod.js gzip153 kB153 kB
app-page.run...dev.js gzip298 kB298 kBN/A
app-page.run..prod.js gzip153 kB153 kB
app-route-ex...dev.js gzip68.6 kB68.6 kBN/A
app-route-ex..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.7 kB68.7 kBN/A
app-route-tu..prod.js gzip47.5 kB47.5 kB
app-route-tu...dev.js gzip68.3 kB68.3 kBN/A
app-route-tu..prod.js gzip47.2 kB47.2 kBN/A
app-route.ru...dev.js gzip68.2 kB68.2 kBN/A
app-route.ru..prod.js gzip47.2 kB47.2 kBN/A
dist_client_...dev.js gzip326 B326 B
dist_client_...dev.js gzip328 B328 B
dist_client_...dev.js gzip320 B320 B
dist_client_...dev.js gzip318 B318 B
pages-api-tu...dev.js gzip41 kB41 kB
pages-api-tu..prod.js gzip31.1 kB31.1 kB
pages-api.ru...dev.js gzip41 kB41 kB
pages-api.ru..prod.js gzip31.1 kB31.1 kB
pages-turbo....dev.js gzip50.5 kB50.5 kB
pages-turbo...prod.js gzip38 kB38 kB
pages.runtim...dev.js gzip50.5 kB50.5 kB
pages.runtim..prod.js gzip38 kB38 kB
server.runti..prod.js gzip59.8 kB59.8 kB
Overall change1.38 MB1.38 MB
build cache Overall increase ⚠️
vercel/next.js canaryvercel/next.js update/react/19.3.0-canary-bcf97c75-20251215Change
0.pack gzip3.11 MB3.11 MB⚠️ +2.51 kB
index.pack gzip93.7 kB93.1 kBN/A
Overall change3.11 MB3.11 MB⚠️ +2.51 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
failed to diff
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-dda7d8b64d4ba15c.js"],+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-d95f7ec6af4d2644.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",+ "static\u002Fchunks\u002Fpages\u002F_error-209c0c82205a7c9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",+ "static\u002Fchunks\u002Fpages\u002Fcss-62710339bc830ded.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",+ "static\u002Fchunks\u002Fpages\u002Fdynamic-8ed3486bb68dd6c6.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-0db9f7bb610d3072.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-747416c4075e42aa.js"],+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-8b10205be7505244.js"],
"/image": [
- "static\u002Fchunks\u002F2747-90c828280005c0c3.js",- "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",+ "static\u002Fchunks\u002F6349-ee9aecde860d4832.js",+ "static\u002Fchunks\u002Fpages\u002Fimage-f90ae17c3ad1d38b.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-6ab9a67b348df1bf.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-f132fb471e65a8b9.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",+ "static\u002Fchunks\u002Fpages\u002Fscript-8e2028e44b8da2d9.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",+ "static\u002Fchunks\u002Fpages\u002FwithRouter-a86d259faa012c1c.js",
],
sortedPages: [
"\u002F",
Diff for dynamic-HASH.js
@@ -1,17 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 1231: /***/ (- module,+ /***/ 2604: /***/ (+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4464);+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/dynamic",+ function () {+ return __webpack_require__(3643);+ },+ ]);+ if (false) {+ }
/***/
},
- /***/ 2101: /***/ (+ /***/ 3401: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -38,24 +45,63 @@
/***/
},
- /***/ 3458: /***/ (+ /***/ 3643: /***/ (
__unused_webpack_module,
- __unused_webpack_exports,+ __webpack_exports__,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([- "/dynamic",- function () {- return __webpack_require__(9381);- },- ]);- if (false) {- }+ "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__(3108);+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =+ __webpack_require__(3973);+ /* 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() */ 1596)+ .then(__webpack_require__.bind(__webpack_require__, 1596))+ .then((mod) => mod.Hello),+ {+ loadableGenerated: {+ webpack: () => [/*require.resolve*/ 1596],+ },+ }+ );+ 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;
/***/
},
- /***/ 4464: /***/ (module, exports, __webpack_require__) => {+ /***/ 3660: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -88,7 +134,7 @@
__webpack_require__(4312)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(9799)+ __webpack_require__(4539)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -188,63 +234,17 @@
/***/
},
- /***/ 9381: /***/ (- __unused_webpack_module,- __webpack_exports__,+ /***/ 3973: /***/ (+ module,+ __unused_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__(3108);- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =- __webpack_require__(1231);- /* 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() */ 2086)- .then(__webpack_require__.bind(__webpack_require__, 2086))- .then((mod) => mod.Hello),- {- loadableGenerated: {- webpack: () => [/*require.resolve*/ 2086],- },- }- );- 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;+ module.exports = __webpack_require__(3660);
/***/
},
- /***/ 9799: /***/ (+ /***/ 4539: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -286,7 +286,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(4312)
);
- const _loadablecontextsharedruntime = __webpack_require__(2101);+ const _loadablecontextsharedruntime = __webpack_require__(3401);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -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__(3458)+ __webpack_exec__(2604)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 1564: /***/ (+ /***/ 7046: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/edge-ssr",+ function () {+ return __webpack_require__(7142);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7142: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -20,30 +37,13 @@
/***/
},
-- /***/ 4300: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/edge-ssr",- function () {- return __webpack_require__(1564);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4300)+ __webpack_exec__(7046)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 1548: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/head",- function () {- return __webpack_require__(4282);- },- ]);- if (false) {- }-- /***/- },-- /***/ 3952: /***/ (+ /***/ 3770: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1653);+ module.exports = __webpack_require__(9025);
/***/
},
- /***/ 4282: /***/ (+ /***/ 6236: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3952);+ __webpack_require__(3770);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
++ /***/ 6510: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/head",+ function () {+ return __webpack_require__(6236);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1548)+ __webpack_exec__(6510)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 6376: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/",- function () {- return __webpack_require__(8460);- },- ]);- if (false) {- }-- /***/- },-- /***/ 8460: /***/ (+ /***/ 830: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -36,13 +19,30 @@
/***/
},
++ /***/ 1938: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/",+ function () {+ return __webpack_require__(830);+ },+ ]);+ if (false) {+ }++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6376)+ __webpack_exec__(1938)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,220 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 857: /***/ (module, exports, __webpack_require__) => {+ /***/ 2774: /***/ (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__(4312);+ const _requestidlecallback = __webpack_require__(9413);+ 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++ /***/+ },++ /***/ 3351: /***/ (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__(4312);+ 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++ /***/+ },++ /***/ 3440: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(4757);++ /***/+ },++ /***/ 4757: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -23,22 +236,22 @@
return useLinkStatus;
},
});
- const _interop_require_wildcard = __webpack_require__(8781);+ const _interop_require_wildcard = __webpack_require__(1162);
const _jsxruntime = __webpack_require__(3108);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(4312)
);
- const _resolvehref = __webpack_require__(4055);- const _islocalurl = __webpack_require__(7175);- const _formaturl = __webpack_require__(9674);- const _utils = __webpack_require__(7424);- const _addlocale = __webpack_require__(589);- const _routercontextsharedruntime = __webpack_require__(7010);- const _useintersection = __webpack_require__(2330);- const _getdomainlocale = __webpack_require__(7207);- const _addbasepath = __webpack_require__(9942);- const _usemergedref = __webpack_require__(8067);- const _erroronce = __webpack_require__(1945);+ const _resolvehref = __webpack_require__(4691);+ const _islocalurl = __webpack_require__(4763);+ const _formaturl = __webpack_require__(3246);+ const _utils = __webpack_require__(7372);+ const _addlocale = __webpack_require__(1809);+ const _routercontextsharedruntime = __webpack_require__(2254);+ const _useintersection = __webpack_require__(2774);+ const _getdomainlocale = __webpack_require__(8803);+ const _addbasepath = __webpack_require__(5834);+ const _usemergedref = __webpack_require__(3351);+ const _erroronce = __webpack_require__(6021);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -417,168 +630,43 @@
/***/
},
- /***/ 1945: /***/ (__unused_webpack_module, exports) => {- "use strict";-- Object.defineProperty(exports, "__esModule", {- value: true,- });- Object.defineProperty(exports, "errorOnce", {- enumerable: true,- get: function () {- return errorOnce;+ /***/ 5326: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/link",+ function () {+ return __webpack_require__(9058);
},
- });- let errorOnce = (_) => {};+ ]);
if (false) {
- } //# sourceMappingURL=error-once.js.map+ }
/***/
},
- /***/ 2330: /***/ (module, exports, __webpack_require__) => {+ /***/ 6021: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "useIntersection", {+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return useIntersection;+ return errorOnce;
},
});
- const _react = __webpack_require__(4312);- const _requestidlecallback = __webpack_require__(601);- 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-- /***/- },-- /***/ 4972: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/link",- function () {- return __webpack_require__(7600);- },- ]);+ let errorOnce = (_) => {};
if (false) {
- }+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 7207: /***/ (module, exports, __webpack_require__) => {+ /***/ 8803: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -590,7 +678,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(151);+ const _normalizetrailingslash = __webpack_require__(1315);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -614,7 +702,7 @@
/***/
},
- /***/ 7600: /***/ (+ /***/ 9058: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -629,7 +717,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(7830);+ __webpack_require__(3440);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +747,13 @@
/***/
},
-- /***/ 7830: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(857);-- /***/- },-- /***/ 8067: /***/ (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__(4312);- 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-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4972)+ __webpack_exec__(5326)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 1640: /***/ (+ /***/ 2014: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,7 +36,17 @@
/***/
},
- /***/ 2172: /***/ (+ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },++ /***/ 4414: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +54,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(1640);+ return __webpack_require__(2014);
},
]);
if (false) {
@@ -68,7 +68,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2172)+ __webpack_exec__(4414)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 4977: /***/ (+ /***/ 2591: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(326);+ module.exports = __webpack_require__(4634);
/***/
},
- /***/ 5887: /***/ (+ /***/ 5030: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/script",+ function () {+ return __webpack_require__(7557);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 7557: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4977);+ __webpack_require__(2591);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +75,13 @@
/***/
},
-- /***/ 6268: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/script",- function () {- return __webpack_require__(5887);- },- ]);- if (false) {- }-- /***/- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6268)+ __webpack_exec__(5030)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1179: /***/ (- module,- __unused_webpack_exports,- __webpack_require__- ) => {- module.exports = __webpack_require__(9864);-- /***/- },-- /***/ 2028: /***/ (- __unused_webpack_module,- __unused_webpack_exports,- __webpack_require__- ) => {- (window.__NEXT_P = window.__NEXT_P || []).push([- "/withRouter",- function () {- return __webpack_require__(4501);- },- ]);- if (false) {- }-- /***/- },-- /***/ 4501: /***/ (+ /***/ 559: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(3108);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1179);+ __webpack_require__(4169);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
++ /***/ 726: /***/ (+ __unused_webpack_module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ (window.__NEXT_P = window.__NEXT_P || []).push([+ "/withRouter",+ function () {+ return __webpack_require__(559);+ },+ ]);+ if (false) {+ }++ /***/+ },++ /***/ 4169: /***/ (+ module,+ __unused_webpack_exports,+ __webpack_require__+ ) => {+ module.exports = __webpack_require__(9700);++ /***/+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2028)+ __webpack_exec__(726)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page.runtime.dev.js
failed to diff
Diff for server.runtime.prod.js

Diff too large to display

Commit: 193aaa8

@nextjs-bot

nextjs-bot commented Dec 15, 2025

Copy link
Copy Markdown
ContributorAuthor

Failing test suites

Commit: 193aaa8 | About building and testing Next.js

pnpm test packages/next-codemod/transforms/__tests__/built-in-next-font.test.js (job)

  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-04 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-05 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-06 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-07 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-08 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-10 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-11 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-12 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-13 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-14 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-15 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-16 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-17 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-18 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-19 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-21 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-22 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-23 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-24 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-25 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03 (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util (DD)
  • next-async-request-api - dynamic-apis > transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util (DD)
Expand output

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-01

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
- callback(name)
+ callback(name)
- }
-
+ }
+ - function callback(name: any) {
+ function callback(name: any) {
- console.log(name)
+ console.log(name)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function MyComponent() {
+ export async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // If it's sync default export, convert to async and await the function call
+ // If it's sync default export, convert to async and await the function call
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-04

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function MyComponent() {
+ export default async function MyComponent() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
- }
-
+ }
+ - export async function MyComponent2() {
+ export async function MyComponent2() {
- (await draftMode()).enable()
+ (await draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-05

expect(received).toEqual(expected) // deep equality
- Expected - 9
+ Received + 9
- import { use } from "react";
+ import { use } from "react";
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers';
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
- }
-
+ }
+ - export function useDraftModeEnabled() {
+ export function useDraftModeEnabled() {
- use(draftMode()).enable()
+ use(draftMode()).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-06

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import React from 'react'
+ import React from 'react'
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export default async function Page() {
+ export default async function Page() {
- return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
+ return <button disabled={(await draftMode()).isEnabled}>Enable Draft Mode</button>;
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-07

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- // Already imported the type
+ // Already imported the type
- import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
-
+ import { draftMode, type UnsafeUnwrappedDraftMode } from 'next/headers'
+ - export function MyComponent2() {
+ export function MyComponent2() {
- (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
+ (draftMode() as unknown as UnsafeUnwrappedDraftMode).enable()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-08

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function GET(): Promise<Response> {
+ export async function GET(): Promise<Response> {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-10

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp2() {
+ export function MyComp2() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
- }
-
+ }
+ - export function MyComp3() {
+ export function MyComp3() {
- return (headers() as unknown as UnsafeUnwrappedHeaders);
+ return (headers() as unknown as UnsafeUnwrappedHeaders);
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-11

expect(received).toEqual(expected) // deep equality
- Expected - 8
+ Received + 8
- import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function MyComp() {
+ export function MyComp() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- }
-
+ }
+ - export function generateContentfulMetadata() {
+ export function generateContentfulMetadata() {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-12

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-13

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from "next/headers";
-
+ import { headers } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- callSomething(await headers());
+ callSomething(await headers());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-14

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - export default async function Page() {
+ export default async function Page() {
- callSomething(await cookies());
+ callSomething(await cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-15

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - async function MyComponent() {
+ async function MyComponent() {
- function asyncFunction() {
+ function asyncFunction() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-16

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from "next/headers";
-
+ import { cookies } from "next/headers";
+ - function MyComponent() {
+ function MyComponent() {
- callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
+ callSomething(/* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies());
+ cookies());
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-17

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await cookies()).get('name')
+ const name = (await cookies()).get('name')
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-18

expect(received).toEqual(expected) // deep equality
- Expected - 16
+ Received + 16
- import {
+ import {
- cookies as myCookies,
+ cookies as myCookies,
- headers as myHeaders,
+ headers as myHeaders,
- draftMode as myDraftMode,
+ draftMode as myDraftMode,
- } from 'next/headers'
-
+ } from 'next/headers'
+ - export const myFun = async (): Promise<any> => {
+ export const myFun = async (): Promise<any> => {
- const name = (await myCookies()).get('name')
+ const name = (await myCookies()).get('name')
- }
-
+ }
+ - export const myFun2 = async (): Promise<any> => {
+ export const myFun2 = async (): Promise<any> => {
- await myHeaders()
+ await myHeaders()
- }
-
+ }
+ - export const myFun3 = async (): Promise<any> => {
+ export const myFun3 = async (): Promise<any> => {
- await myDraftMode()
+ await myDraftMode()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-19

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
-
+ import { cookies, headers, type UnsafeUnwrappedHeaders } from 'next/headers';
+ - export function myFun() {
+ export function myFun() {
- return async function () {
+ return async function () {
- (await cookies()).get('name')
+ (await cookies()).get('name')
- };
+ };
- }
-
+ }
+ - export function myFun2() {
+ export function myFun2() {
- return function () {
+ return function () {
- void (headers() as unknown as UnsafeUnwrappedHeaders)
+ void (headers() as unknown as UnsafeUnwrappedHeaders)
- };
+ };
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-21

expect(received).toEqual(expected) // deep equality
- Expected - 7
+ Received + 7
- const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
+ const nextHeaders = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */
- import('next/headers')
-
+ import('next/headers')
+ - function myFunc() {
+ function myFunc() {
- nextHeaders.cookies()
+ nextHeaders.cookies()
- }
-
+ }
+ const nextHeaders2 = /* @next-codemod-error The APIs under 'next/headers' are async now, need to be manually awaited. */ import('next/headers')
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-22

expect(received).toEqual(expected) // deep equality
- Expected - 10
+ Received + 10
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
-
+ }
+ - export async function POST(req: Request) {
+ export async function POST(req: Request) {
- if (req.method === 'POST') {
+ if (req.method === 'POST') {
- (await cookies()).get('token')
+ (await cookies()).get('token')
- }
+ }
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-23

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export type Cookie = Awaited<ReturnType<typeof cookies>>
+ export type Cookie = Awaited<ReturnType<typeof cookies>>
- export function foo(c: Awaited<ReturnType<typeof cookies>>) {
+ export function foo(c: Awaited<ReturnType<typeof cookies>>) {
- return c
+ return c
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-24

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { use } from "react";
+ import { use } from "react";
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - function useHook() {}
-
+ function useHook() {}
+ - export default function Page() {
+ export default function Page() {
- useHook()
+ useHook()
- const c = use(cookies());
+ const c = use(cookies());
- }
-
+ }
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await cookies()
+ await cookies()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-25

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export function myFunc() {
+ export function myFunc() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- void (cookies() as unknown as UnsafeUnwrappedCookies)
+ void (cookies() as unknown as UnsafeUnwrappedCookies)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-01

expect(received).toEqual(expected) // deep equality
- Expected - 26
+ Received + 26
- import React from 'react'
+ import React from 'react'
- import {
+ import {
- headers,
+ headers,
- cookies,
+ cookies,
- draftMode,
+ draftMode,
- type UnsafeUnwrappedHeaders,
+ type UnsafeUnwrappedHeaders,
- type UnsafeUnwrappedCookies,
+ type UnsafeUnwrappedCookies,
- type UnsafeUnwrappedDraftMode,
+ type UnsafeUnwrappedDraftMode,
- } from 'next/headers';
-
+ } from 'next/headers';
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
+ if ((draftMode() as unknown as UnsafeUnwrappedDraftMode).isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = (cookies() as unknown as UnsafeUnwrappedCookies)
+ const c = (cookies() as unknown as UnsafeUnwrappedCookies)
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = (headers() as unknown as UnsafeUnwrappedHeaders)
+ const h = (headers() as unknown as UnsafeUnwrappedHeaders)
- return <p>{h.get('x-foo')}</p>
+ return <p>{h.get('x-foo')}</p>
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/async-api-type-cast-02

expect(received).toEqual(expected) // deep equality
- Expected - 28
+ Received + 28
- import React from 'react'
+ import React from 'react'
- import { + import { - headers,
+ headers,
- cookies, + cookies, - draftMode, + draftMode, - } from 'next/headers'
-
+ } from 'next/headers'
+ - export function MyDraftComponent() {
+ export function MyDraftComponent() {
- if (/* @next-codemod-error Manually await this call and refactor the function to be async */
+ if (/* @next-codemod-error Manually await this call and refactor the function to be async */
- draftMode().isEnabled) {
+ draftMode().isEnabled) {
- return null
+ return null
- }
-
+ }
+ - return <p>page</p>
+ return <p>page</p>
- }
-
+ }
+ - export function MyCookiesComponent() {
+ export function MyCookiesComponent() {
- const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const c = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies()
+ cookies()
- return c.get('name')
+ return c.get('name')
- }
-
+ }
+ - export function MyHeadersComponent() {
+ export function MyHeadersComponent() {
- const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const h = /* @next-codemod-error Manually await this call and refactor the function to be async */
- headers()
+ headers()
- return (
+ return (
- <p>{h.get('x-foo')}</p>
+ <p>{h.get('x-foo')}</p>
- )
+ )
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/custom-routes-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 12
+ Received + 12
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const GET = async function() {
+ export const GET = async function() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function POST() {
+ export async function POST() {
- await headers()
+ await headers()
- }
-
+ }
+ - export async function DELETE() {
+ export async function DELETE() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-01

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export async function generateMetadata() {
+ export async function generateMetadata() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-02

expect(received).toEqual(expected) // deep equality
- Expected - 4
+ Received + 4
- import { headers } from 'next/headers'
-
+ import { headers } from 'next/headers'
+ - export const generateMetadata = async function() {
+ export const generateMetadata = async function() {
- await headers()
+ await headers()
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/generate-metadata-access-api-prop-03

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { draftMode } from 'next/headers'
-
+ import { draftMode } from 'next/headers'
+ - export async function generateMetadata(props: any) {
+ export async function generateMetadata(props: any) {
- const params = await props.params
+ const params = await props.params
- await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
+ await getMostRecentChangelog(params.slug, (await draftMode()).isEnabled)
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-01-util

expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 5
- import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
-
+ import { cookies, type UnsafeUnwrappedCookies } from 'next/headers';
+ - export default function Foo(): string {
+ export default function Foo(): string {
- const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
+ const name = (cookies() as unknown as UnsafeUnwrappedCookies).get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

● next-async-request-api - dynamic-apis › transforms correctly next-async-request-api-dynamic-apis/origin-name-02-util

expect(received).toEqual(expected) // deep equality
- Expected - 6
+ Received + 6
- import { cookies } from 'next/headers'
-
+ import { cookies } from 'next/headers'
+ - export default function Foo() {
+ export default function Foo() {
- const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
+ const name = /* @next-codemod-error Manually await this call and refactor the function to be async */
- cookies().get('name')
+ cookies().get('name')
- return name
+ return name
}
53 |
54 | it(`transforms correctly ${prefix}`, () => {
> 55 | runInlineTest(
| ^
56 | transform,
57 | null,
58 | {
at runInlineTest (../node_modules/.pnpm/jscodeshift@17.0.0_@babel+preset-env@7.26.9_@babel+core@7.26.10_/node_modules/jscodeshift/dist/testUtils.js:49:18)
at Object.runInlineTest (../packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-apis.test.js:55:7)

pnpm test test/integration/next-image-legacy/basic/test/index.test.ts (turbopack) (job)

  • Image Component Tests > production mode > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > production mode > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > Client-side Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > production mode > SSR Image Component Tests > should not pass config to custom loader prop (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should have loaded the first image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the second image immediately (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should pass through classes on a lazy loaded image (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the second image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should not have loaded the third image after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the third image, which is unoptimized, after scrolling further down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fourth image lazily after scrolling down (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the fifth image eagerly, without scrolling (DD)
  • Image Component Tests > production mode > SSR Lazy Loading Tests > should load the sixth image, which has lazyBoundary property after scrolling down (DD)
Expand output

● Image Component Tests › production mode › SSR Image Component Tests › should render an image tag

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support passing through arbitrary attributes

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should modify src with the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset based on the loader

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a srcset even with preceding slash in prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should support the unoptimized attribute

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep auto parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep width parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should keep fit parameter if already set

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add a preload tag for a priority image, with quality

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should add data-nimg data attribute based on layout

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Image Component Tests › should not pass config to custom loader prop

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."
275 | afterAll(() => killApp(app))
276 | describe('SSR Image Component Tests', () => {
> 277 | beforeAll(async () => {
| ^
278 | browser = await webdriver(appPort, '/')
279 | })
280 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:277:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:276:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should render an image tag

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support passing through arbitrary attributes

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should modify src with the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should correctly generate src even if preceding slash is included in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset based on the loader

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should add a srcset even with preceding slash in prop

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should support the unoptimized attribute

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should not add a srcset if unoptimized attribute present

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep auto parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep width parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should keep fit parameter if already set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should NOT add a preload tag for a priority image

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › should only be loaded once if sizes is set

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

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."
336 | })
337 | describe('Client-side Image Component Tests', () => {
> 338 | beforeAll(async () => {
| ^
339 | browser = await webdriver(appPort, '/')
340 | await browser.waitForElementByCss('#clientlink').click()
341 | })
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:338:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:337:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Image Component Tests › Client-side Errors › Should not log an error when an unregistered host is used in production

TypeError: Cannot read properties of null (reading 'eval')
364 | describe('Client-side Errors', () => {
365 | beforeAll(async () => {
> 366 | await browser.eval(`(function() {
| ^
367 | window.gotHostError = false
368 | const origError = console.error
369 | window.console.error = function () {
at Object.eval (integration/next-image-legacy/basic/test/index.test.ts:366:27)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should have loaded the first image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the second image immediately

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the second image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › SSR Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
383 | })
384 | describe('SSR Lazy Loading Tests', () => {
> 385 | beforeAll(async () => {
| ^
386 | browser = await webdriver(appPort, '/lazy')
387 | })
388 | afterAll(async () => {
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:385:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:384:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should have loaded the first image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the second image immediately

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should pass through classes on a lazy loaded image

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the second image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should not have loaded the third image after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the third image, which is unoptimized, after scrolling further down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fourth image lazily after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the fifth image eagerly, without scrolling

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

● Image Component Tests › production mode › Client-side Lazy Loading Tests › should load the sixth image, which has lazyBoundary property after scrolling down

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."
392 | })
393 | describe('Client-side Lazy Loading Tests', () => {
> 394 | beforeAll(async () => {
| ^
395 | browser = await webdriver(appPort, '/')
396 | await browser.waitForElementByCss('#lazylink').click()
397 | await waitFor(500)
at beforeAll (integration/next-image-legacy/basic/test/index.test.ts:394:9)
at describe (integration/next-image-legacy/basic/test/index.test.ts:393:7)
at integration/next-image-legacy/basic/test/index.test.ts:267:56
at Object.describe (integration/next-image-legacy/basic/test/index.test.ts:266:1)

@eps1loneps1lon closed this Jan 12, 2026
@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

create-next-appRelated to our CLI tool for quickly starting a new Next.js application.examplesIssue was opened via the examples template.lockedteststype: nexttype: react-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@nextjs-bot@eps1lon