Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[not for merge] Add fixture highlighting slot layout remount under test/e2e/app-dir/hello-world #74800

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

Conversation

eps1lon
Copy link
Member

@eps1lon eps1lon commented Jan 12, 2025

pnpm test dev test/e2e/app-dir/hello-world and then click between "home" and "one"

Not sure if intended. If so we hopefully have a test checking that we remount a slotted layout. Otherwise I convert this into one.

CleanShot.2025-01-12.at.14.10.10.mp4

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. tests labels Jan 12, 2025
@ijjk
Copy link
Member

ijjk commented Jan 12, 2025

Failing test suites

Commit: c924221

__NEXT_EXPERIMENTAL_PPR=true pnpm test-dev test/e2e/app-dir/hello-world/hello-world.test.ts (PPR)

  • hello-world > should work using cheerio
  • hello-world > should work using browser
  • hello-world > should work with html
  • hello-world > should work with fetch
Expand output

● hello-world › should work using cheerio

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

Expected: "hello world"
Received: ""

   9 |   it('should work using cheerio', async () => {
  10 |     const $ = await next.render$('/')
> 11 |     expect($('p').text()).toBe('hello world')
     |                           ^
  12 |   })
  13 |
  14 |   // Recommended for tests that need a full browser.

  at Object.toBe (e2e/app-dir/hello-world/hello-world.test.ts:11:27)

● hello-world › should work using browser

page.waitForSelector: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('p')

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

  at waitForSelector (lib/browsers/playwright.ts:425:10)
  at BrowserInterface.chain (lib/browsers/base.ts:17:23)
  at BrowserInterface.chain [as waitForElementByCss] (lib/browsers/playwright.ts:423:17)
  at BrowserInterface.waitForElementByCss [as elementByCss] (lib/browsers/playwright.ts:343:17)
  at Object.elementByCss (e2e/app-dir/hello-world/hello-world.test.ts:17:26)
  at Proxy.chain (lib/browsers/base.ts:17:23)
  at Proxy.chain (lib/browsers/playwright.ts:355:17)
  at Object.text (e2e/app-dir/hello-world/hello-world.test.ts:17:44)

● hello-world › should work with html

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

Expected substring: "hello world"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"stylesheet\" href=\"/_next/static/css/app/layout.css?v=1736688104324\" data-precedence=\"next_static/css/app/layout.css\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/webpack.js?v=1736688104324\"/><script src=\"/_next/static/chunks/main-app.js?v=1736688104324\" async=\"\"></script><script src=\"/_next/static/chunks/app-pages-internals.js\" async=\"\"></script><script src=\"/_next/static/chunks/app/layout.js\" async=\"\"></script><script src=\"/_next/static/chunks/app/%40audience/layout.js\" async=\"\"></script><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><script src=\"/_next/static/chunks/polyfills.js\" noModule=\"\"></script></head><body><fieldset><legend>app/layout</legend><fieldset><legend>app/page</legend></fieldset><fieldset><legend>app/@audience/layout</legend><ul><li><a href=\"/\">home</a></li><li><a href=\"/one\">one</a></li><li><a href=\"/two\">two</a></li></ul><fieldset><legend>app/@audience/page</legend></fieldset></fieldset></fieldset><script src=\"/_next/static/chunks/webpack.js?v=1736688104324\" async=\"\"></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,\"3:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"HTTPAccessFallbackBoundary\\\"]\\n4:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/client-segment.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ClientSegmentRoot\\\"]\\n5:I[\\\"(app-pages-browser)/./app/layout.tsx\\\",[\\\"app/layout\\\",\\\"static/chunks/app/layout.js\\\"],\\\"default\\\"]\\nc:\\\"$Sreact.fragment\\\"\\nf:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"MetadataBoundary\\\"]\\n12:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/layout-router.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n13:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/render-from-template-context.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n14:I[\\\"(app-pages-browser)/./app/@audience/layout.js\\\",[\\\"app/@audience/layout\\\",\\\"static/chunks/app/%40audience/layout.js\\\"],\\\"default\\\"]\\n1e:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pa\"])</script><script>self.__next_f.push([1,\"ges-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"OutletBoundary\\\"]\\n31:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/error-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n32:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/client-page.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ClientPageRoot\\\"]\\n33:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ViewportBoundary\\\"]\\n:HL[\\\"/_next/static/css/app/layout.css?v=1736688104324\\\",\\\"style\\\"]\\n:N1736688104326.5002\\n2:{\\\"name\\\":\\\"Preloads\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"preloadCallbacks\\\":[\\\"$E(()=\\u003e{ctx.componentMod.preloadStyle(fullHref,ctx.renderOpts.crossOrigin,ctx.nonce)})\\\"]}}\\n1:D{\\\"time\\\":0.5262470245361328}\\n1:D\\\"$2\\\"\\n1:D{\\\"time\\\":0.6993465423583984}\\n1:null\\n7:{\\\"name\\\":\\\"NotFound\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n6:D{\\\"time\\\":18.973546981811523}\\n6:D\\\"$7\\\"\\n8:{\\\"name\\\":\\\"HTTPAccessErrorFallback\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$7\\\",\\\"stack\\\":[],\\\"props\\\":{\\\"status\\\":404,\\\"message\\\":\\\"This page could not be found.\\\"}}\\n6:D{\\\"time\\\":19.156309127807617}\\n6:D\\\"$8\\\"\\n6:D{\\\"time\\\":19.38389015197754}\\n6:[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"404: This page could not be found.\\\"},\\\"$8\\\",[],1],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"fontFamily\\\":\\\"system-ui,\\\\\\\"Segoe UI\\\\\\\",Roboto,Helvetica,Arial,sans-serif,\\\\\\\"Apple Color Emoji\\\\\\\",\\\\\\\"Segoe UI Emoji\\\\\\\"\\\",\\\"height\\\":\\\"100vh\\\",\\\"textAlign\\\":\\\"center\\\",\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"alignItems\\\":\\\"center\\\",\\\"justifyContent\\\":\\\"center\\\"},\\\"children\\\":[\\\"$\\\",\\\"d\"])</script><script>self.__next_f.push([1,\"iv\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"style\\\",null,{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\\\"}},\\\"$8\\\",[],1],[\\\"$\\\",\\\"h1\\\",null,{\\\"className\\\":\\\"next-error-h1\\\",\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\",\\\"margin\\\":\\\"0 20px 0 0\\\",\\\"padding\\\":\\\"0 23px 0 0\\\",\\\"fontSize\\\":24,\\\"fontWeight\\\":500,\\\"verticalAlign\\\":\\\"top\\\",\\\"lineHeight\\\":\\\"49px\\\"},\\\"children\\\":404},\\\"$8\\\",[],1],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\"},\\\"children\\\":[\\\"$\\\",\\\"h2\\\",null,{\\\"style\\\":{\\\"fontSize\\\":14,\\\"fontWeight\\\":400,\\\"lineHeight\\\":\\\"49px\\\",\\\"margin\\\":0},\\\"children\\\":\\\"This page could not be found.\\\"},\\\"$8\\\",[],1]},\\\"$8\\\",[],1]]},\\\"$8\\\",[],1]},\\\"$8\\\",[],1]]\\na:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n9:D{\\\"time\\\":20.01416015625}\\n9:D\\\"$a\\\"\\nb:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n9:D{\\\"time\\\":20.10415267944336}\\n9:D\\\"$b\\\"\\n9:D{\\\"time\\\":20.216981887817383}\\ne:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\nd:D{\\\"time\\\":20.307886123657227}\\nd:D\\\"$e\\\"\\nd:D{\\\"time\\\":20.424283981323242}\\n11:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$e\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n10:D{\\\"time\\\":20.512245178222656}\\n10:D\\\"$11\\\"\\nd:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L10\\\"},\\\"$e\\\",[],1]\\n9:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$d\\\"},null,[],1]]\\n16:{\\\"name\\\":\\\"AudiencePage\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"params\\\":\\\"$@\\\",\\\"searchParams\\\":\\\"$@\\\"}}\\n15:D{\\\"time\\\":24.010894775390625}\\n15:D\\\"$16\\\"\\n15:D{\\\"time\\\":24.235267639160156}\\n15:[\\\"$\\\",\\\"fieldset\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"legend\\\",null,{\\\"children\\\":\\\"app/@audience/page\\\"},\\\"$16\\\",[[\\\"AudiencePage\\\",\\\"webpack-internal:///(rsc)/./app/@audience/page.js\\\",10,94]],1]},\\\"$16\\\",[[\\\"AudiencePage\\\",\\\"webpack-internal:///(rsc)/./app/@audience/page.js\\\",9,87]],1]\\n18:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n17:D{\\\"time\\\":24.5631046295166}\\n17:D\\\"$18\\\"\\n19:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"ow\"])</script><script>self.__next_f.push([1,\"ner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n17:D{\\\"time\\\":24.664644241333008}\\n17:D\\\"$19\\\"\\n17:D{\\\"time\\\":24.78549575805664}\\n1b:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n1a:D{\\\"time\\\":24.876569747924805}\\n1a:D\\\"$1b\\\"\\n1a:D{\\\"time\\\":25.005834579467773}\\n1d:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$1b\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n1c:D{\\\"time\\\":25.089916229248047}\\n1c:D\\\"$1d\\\"\\n1a:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L1c\\\"},\\\"$1b\\\",[],1]\\n17:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$1a\\\"},null,[],1]]\\n20:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(()=\\u003ePromise.resolve())\\\"}}\\n1f:D{\\\"time\\\":25.54291534423828}\\n1f:D\\\"$20\\\"\\n22:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(()=\\u003ePromise.resolve())\\\"}}\\n21:D{\\\"time\\\":25.749372482299805}\\n21:D\\\"$22\\\"\\n24:{\\\"name\\\":\\\"Page\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"params\\\":\\\"$@\\\",\\\"searchParams\\\":\\\"$@\\\"}}\\n23:D{\\\"time\\\":26.1010684967041}\\n23:D\\\"$24\\\"\\n23:D{\\\"time\\\":26.266202926635742}\\n23:[\\\"$\\\",\\\"fieldset\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"legend\\\",null,{\\\"children\\\":\\\"app/page\\\"},\\\"$24\\\",[[\\\"Page\\\",\\\"webpack-internal:///(rsc)/./app/page.tsx\\\",10,94]],1]},\\\"$24\\\",[[\\\"Page\\\",\\\"webpack-internal:///(rsc)/./app/page.tsx\\\",9,87]],1]\\n26:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n25:D{\\\"time\\\":26.574071884155273}\\n25:D\\\"$26\\\"\\n27:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n25:D{\\\"time\\\":26.718231201171875}\\n25:D\\\"$27\\\"\\n25:D{\\\"time\\\":26.836013793945312}\\n29:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n28:D{\\\"time\\\":26.916358947753906}\\n28:D\\\"$29\\\"\\n28:D{\\\"time\\\":27.106233596801758}\\n2b:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$29\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n2a:D{\\\"time\\\":27.18958282470703}\\n2a:D\\\"$2b\\\"\\n28:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L2a\\\"},\\\"$29\\\",[],1]\\n25:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$28\\\"},null,[],1]]\\n2d:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"\"])</script><script>self.__next_f.push([1,\"$E(async function getViewportReady() {\\\\n        await viewport();\\\\n        return undefined;\\\\n    })\\\"}}\\n2c:D{\\\"time\\\":27.55240821838379}\\n2c:D\\\"$2d\\\"\\n2f:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(async function getMetadataReady() {\\\\n        // Only warm up metadata() call when it's blocking metadata,\\\\n        // otherwise it will be fully managed by AsyncMetadata component.\\\\n        if (!serveStreamingMetadata) {\\\\n            await metadata();\\\\n        }\\\\n        return undefined;\\\\n    })\\\"}}\\n2e:D{\\\"time\\\":27.736297607421875}\\n2e:D\\\"$2f\\\"\\n\"])</script><script>self.__next_f.push([1,\"34:{\\\"name\\\":\\\"NonIndex\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ctx\\\":{\\\"componentMod\\\":{\\\"GlobalError\\\":\\\"$31\\\",\\\"__next_app__\\\":{\\\"require\\\":\\\"$E(function __webpack_require__(moduleId) {\\\\n/******/ \\\\t\\\\t// Check if module is in cache\\\\n/******/ \\\\t\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n/******/ \\\\t\\\\tif (cachedModule !== undefined) {\\\\n/******/ \\\\t\\\\t\\\\treturn cachedModule.exports;\\\\n/******/ \\\\t\\\\t}\\\\n/******/ \\\\t\\\\t// Create a new module (and put it into the cache)\\\\n/******/ \\\\t\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n/******/ \\\\t\\\\t\\\\tid: moduleId,\\\\n/******/ \\\\t\\\\t\\\\tloaded: false,\\\\n/******/ \\\\t\\\\t\\\\texports: {}\\\\n/******/ \\\\t\\\\t};\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Execute the module function\\\\n/******/ \\\\t\\\\tvar threw = true;\\\\n/******/ \\\\t\\\\ttry {\\\\n/******/ \\\\t\\\\t\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n/******/ \\\\t\\\\t\\\\tthrew = false;\\\\n/******/ \\\\t\\\\t} finally {\\\\n/******/ \\\\t\\\\t\\\\tif(threw) delete __webpack_module_cache__[moduleId];\\\\n/******/ \\\\t\\\\t}\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Flag the module as loaded\\\\n/******/ \\\\t\\\\tmodule.loaded = true;\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Return the exports of the module\\\\n/******/ \\\\t\\\\treturn module.exports;\\\\n/******/ \\\\t})\\\",\\\"loadChunk\\\":\\\"$E(() =\\u003e Promise.resolve())\\\"},\\\"pages\\\":[\\\"/tmp/next-install-08db3cfcad1b38cb61ad66fb976e91cc454b720d54a0e9acbdc2f8dc842c4649/app/@audience/page.js\\\",\\\"/tmp/next-install-08db3cfcad1b38cb61ad66fb976e91cc454b720d54a0e9acbdc2f8dc842c4649/app/page.tsx\\\"],\\\"routeModule\\\":{\\\"userland\\\":{\\\"loaderTree\\\":[\\\"\\\",\\\"$Y\\\",\\\"$Y\\\"]},\\\"definition\\\":\\\"$Y\\\"},\\\"tree\\\":\\\"$Y\\\",\\\"ClientPageRoot\\\":\\\"$32\\\",\\\"ClientSegmentRoot\\\":\\\"$4\\\",\\\"HTTPAccessFallbackBoundary\\\":\\\"$3\\\",\\\"LayoutRouter\\\":\\\"$12\\\",\\\"MetadataBoundary\\\":\\\"$f\\\",\\\"OutletBoundary\\\":\\\"$1e\\\",\\\"Postpone\\\":\\\"$E(function Postpone({ reason, route }) {\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    const dynamicTracking = prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\\\\n    postponeWithTracking(route, reason, dynamicTracking);\\\\n})\\\",\\\"RenderFromTemplateContext\\\":\\\"$13\\\",\\\"ViewportBoundary\\\":\\\"$33\\\",\\\"actionAsyncStorage\\\":\\\"$Y\\\",\\\"collectSegmentData\\\":\\\"$E(async function collectSegmentData(shouldAssumePartialData, fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest) {\\\\n    // Traverse the router tree and generate a prefetch response for each segment.\\\\n    // A mutable map to collect the results as we traverse the route tree.\\\\n    const resultMap = new Map();\\\\n    // Before we start, warm up the module cache by decoding the page data once.\\\\n    // Then we can assume that any remaining async tasks that occur the next time\\\\n    // are due to hanging promises caused by dynamic data access. Note we only\\\\n    // have to do this once per page, not per individual segment.\\\\n    //\\\\n    try {\\\\n        await (0, _clientedge.createFromReadableStream)((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer), {\\\\n            serverConsumerManifest\\\\n        });\\\\n        await (0, _scheduler.waitAtLeastOneReactRenderTask)();\\\\n    } catch  {}\\\\n    // Create an abort controller that we'll use to stop the stream.\\\\n    const abortController = new AbortController();\\\\n    const onCompletedProcessingRouteTree = async ()=\\u003e{\\\\n        // Since all we're doing is decoding and re-encoding a cached prerender, if\\\\n        // serializing the stream takes longer than a microtask, it must because of\\\\n        // hanging promises caused by dynamic data.\\\\n        await (0, _scheduler.waitAtLeastOneReactRenderTask)();\\\\n        abortController.abort();\\\\n    };\\\\n    // Generate a stream for the route tree prefetch. While we're walking the\\\\n    // tree, we'll also spawn additional tasks to generate the segment prefetches.\\\\n    // The promises for these tasks are pushed to a mutable array that we will\\\\n    // await once the route tree is fully rendered.\\\\n    const segmentTasks = [];\\\\n    const { prelude: treeStream } = await (0, _staticedge.unstable_prerender)(// RootTreePrefetch is not a valid return type for a React component, but\\\\n    // we need to use a component so that when we decode the original stream\\\\n    // inside of it, the side effects are transferred to the new stream.\\\\n    // @ts-expect-error\\\\n    /*#__PURE__*/ (0, _jsxruntime.jsx)(PrefetchTreeData, {\\\\n        shouldAssumePartialData: shouldAssumePartialData,\\\\n        fullPageDataBuffer: fullPageDataBuffer,\\\\n        serverConsumerManifest: serverConsumerManifest,\\\\n        clientModules: clientModules,\\\\n        staleTime: staleTime,\\\\n        segmentTasks: segmentTasks,\\\\n        onCompletedProcessingRouteTree: onCompletedProcessingRouteTree\\\\n    }), clientModules, {\\\\n        signal: abortController.signal,\\\\n        onError: onSegmentPrerenderError\\\\n    });\\\\n    // Write the route tree to a special `/_tree` segment.\\\\n    const treeBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(treeStream);\\\\n    resultMap.set('/_tree', treeBuffer);\\\\n    // Now that we've finished rendering the route tree, all the segment tasks\\\\n    // should have been spawned. Await them in parallel and write the segment\\\\n    // prefetches to the result map.\\\\n    for (const [segmentPath, buffer] of (await Promise.all(segmentTasks))){\\\\n        resultMap.set(segmentPath, buffer);\\\\n    }\\\\n    return resultMap;\\\\n})\\\",\\\"createMetadataComponents\\\":\\\"$E(function createMetadataComponents({ tree, searchParams, metadataContext, getDynamicParamFromSegment, appUsingSizeAdjustment, errorType, createServerParamsForMetadata, workStore, MetadataBoundary, ViewportBoundary, serveStreamingMetadata }) {\\\\n    function ViewportTree() {\\\\n        return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\\\\n            children: [\\\\n                /*#__PURE__*/ (0, _jsxruntime.jsx)(ViewportBoundary, {\\\\n                    children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Viewport, {})\\\\n                }),\\\\n                appUsingSizeAdjustment ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\\\\\\\"meta\\\\\\\", {\\\\n                    name: \\\\\\\"next-size-adjust\\\\\\\",\\\\n                    content: \\\\\\\"\\\\\\\"\\\\n                }) : null\\\\n            ]\\\\n        });\\\\n    }\\\\n    function MetadataTree() {\\\\n        return /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataBoundary, {\\\\n            children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Metadata, {})\\\\n        });\\\\n    }\\\\n    function viewport() {\\\\n        return getResolvedViewport(tree, searchParams, getDynamicParamFromSegment, createServerParamsForMetadata, workStore, errorType);\\\\n    }\\\\n    async function Viewport() {\\\\n        try {\\\\n            return await viewport();\\\\n        } catch (error) {\\\\n            if (!errorType \\u0026\\u0026 (0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\\\\n                try {\\\\n                    return await getNotFoundViewport(tree, searchParams, getDynamicParamFromSegment, createServerParamsForMetadata, workStore);\\\\n                } catch  {}\\\\n            }\\\\n            // We don't actually want to error in this component. We will\\\\n            // also error in the MetadataOutlet which causes the error to\\\\n            // bubble from the right position in the page to be caught by the\\\\n            // appropriate boundaries\\\\n            return null;\\\\n        }\\\\n    }\\\\n    Viewport.displayName = _metadataconstants.VIEWPORT_BOUNDARY_NAME;\\\\n    function metadata() {\\\\n        return getResolvedMetadata(tree, searchParams, getDynamicParamFromSegment, metadataContext, createServerParamsForMetadata, workStore, errorType);\\\\n    }\\\\n    async function resolveFinalMetadata() {\\\\n        try {\\\\n            return await metadata();\\\\n        } catch (error) {\\\\n            if (!errorType \\u0026\\u0026 (0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\\\\n                try {\\\\n                    return await getNotFoundMetadata(tree, searchParams, getDynamicParamFromSegment, metadataContext, createServerParamsForMetadata, workStore);\\\\n                } catch  {}\\\\n            }\\\\n            // We don't actually want to error in this component. We will\\\\n            // also error in the MetadataOutlet which causes the error to\\\\n            // bubble from the right position in the page to be caught by the\\\\n            // appropriate boundaries\\\\n            return null;\\\\n        }\\\\n    }\\\\n    async function Metadata() {\\\\n        if (serveStreamingMetadata) {\\\\n            return /*#__PURE__*/ (0, _jsxruntime.jsx)(_asyncmetadata.AsyncMetadata, {\\\\n                promise: resolveFinalMetadata()\\\\n            });\\\\n        }\\\\n        return await resolveFinalMetadata();\\\\n    }\\\\n    Metadata.displayName = _metadataconstants.METADATA_BOUNDARY_NAME;\\\\n    async function getMetadataReady() {\\\\n        // Only warm up metadata() call when it's blocking metadata,\\\\n        // otherwise it will be fully managed by AsyncMetadata component.\\\\n        if (!serveStreamingMetadata) {\\\\n            await metadata();\\\\n        }\\\\n        return undefined;\\\\n    }\\\\n    async function getViewportReady() {\\\\n        await viewport();\\\\n        return undefined;\\\\n    }\\\\n    return {\\\\n        ViewportTree,\\\\n        MetadataTree,\\\\n        getViewportReady,\\\\n        getMetadataReady\\\\n    };\\\\n})\\\",\\\"createPrerenderParamsForClientSegment\\\":\\\"$E(function createPrerenderParamsForClientSegment(underlyingParams, workStore) {\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender') {\\\\n        const fallbackParams = workStore.fallbackRouteParams;\\\\n        if (fallbackParams) {\\\\n            for(let key in underlyingParams){\\\\n                if (fallbackParams.has(key)) {\\\\n                    // This params object has one of more fallback params so we need to consider\\\\n                    // the awaiting of this params object \\\\\\\"dynamic\\\\\\\". Since we are in dynamicIO mode\\\\n                    // we encode this as a promise that never resolves\\\\n                    return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, '`params`');\\\\n                }\\\\n            }\\\\n        }\\\\n    }\\\\n    // We're prerendering in a mode that does not abort. We resolve the promise without\\\\n    // any tracking because we're just transporting a value from server to client where the tracking\\\\n    // will be applied.\\\\n    return Promise.resolve(underlyingParams);\\\\n})\\\",\\\"createPrerenderSearchParamsForClientPage\\\":\\\"$E(function createPrerenderSearchParamsForClientPage(workStore) {\\\\n    if (workStore.forceStatic) {\\\\n        // When using forceStatic we override all other logic and always just return an empty\\\\n        // dictionary object.\\\\n        return Promise.resolve({});\\\\n    }\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender') {\\\\n        // dynamicIO Prerender\\\\n        // We're prerendering in a mode that aborts (dynamicIO) and should stall\\\\n        // the promise to ensure the RSC side is considered dynamic\\\\n        return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, '`searchParams`');\\\\n    }\\\\n    // We're prerendering in a mode that does not aborts. We resolve the promise without\\\\n    // any tracking because we're just transporting a value from server to client where the tracking\\\\n    // will be applied.\\\\n    return Promise.resolve({});\\\\n})\\\",\\\"createServerParamsForMetadata\\\":\\\"$E(function createServerParamsForServerSegment(underlyingParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderParams(underlyingParams, workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderParams(underlyingParams, workStore);\\\\n})\\\",\\\"createServerParamsForServerSegment\\\":\\\"$E(function createServerParamsForServerSegment(underlyingParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderParams(underlyingParams, workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderParams(underlyingParams, workStore);\\\\n})\\\",\\\"createServerSearchParamsForMetadata\\\":\\\"$E(function createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderSearchParams(workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderSearchParams(underlyingSearchParams, workStore);\\\\n})\\\",\\\"createServerSearchParamsForServerPage\\\":\\\"$E(function createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderSearchParams(workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderSearchParams(underlyingSearchParams, workStore);\\\\n})\\\",\\\"createTemporaryReferenceSet\\\":\\\"$E(function(){return new WeakMap})\\\",\\\"decodeAction\\\":\\\"$E(function(body,serverManifest){var formData=new FormData,action=null;return body.forEach(function(value1,key){key.startsWith(\\\\\\\"$ACTION_\\\\\\\")?key.startsWith(\\\\\\\"$ACTION_REF_\\\\\\\")?(value1=decodeBoundActionMetaData(body,serverManifest,value1=\\\\\\\"$ACTION_\\\\\\\"+key.slice(12)+\\\\\\\":\\\\\\\"),action=loadServerReference(serverManifest,value1.id,value1.bound)):key.startsWith(\\\\\\\"$ACTION_ID_\\\\\\\")\\u0026\\u0026(action=loadServerReference(serverManifest,value1=key.slice(11),null)):formData.append(key,value1)}),null===action?null:action.then(function(fn){return fn.bind(null,formData)})})\\\",\\\"decodeFormState\\\":\\\"$E(function(actionResult,body,serverManifest){var keyPath=body.get(\\\\\\\"$ACTION_KEY\\\\\\\");if(\\\\\\\"string\\\\\\\"!=typeof keyPath)return Promise.resolve(null);var metaData=null;if(body.forEach(function(value1,key){key.startsWith(\\\\\\\"$ACTION_REF_\\\\\\\")\\u0026\\u0026(metaData=decodeBoundActionMetaData(body,serverManifest,\\\\\\\"$ACTION_\\\\\\\"+key.slice(12)+\\\\\\\":\\\\\\\"))}),null===metaData)return Promise.resolve(null);var referenceId=metaData.id;return Promise.resolve(metaData.bound).then(function(bound){return null===bound?null:[actionResult,keyPath,referenceId,bound.length-1]})})\\\",\\\"decodeReply\\\":\\\"$E(function(body,webpackMap,options){if(\\\\\\\"string\\\\\\\"==typeof body){var form=new FormData;form.append(\\\\\\\"0\\\\\\\",body),body=form}return webpackMap=getChunk(body=createResponse(webpackMap,\\\\\\\"\\\\\\\",options?options.temporaryReferences:void 0,body),0),close1(body),webpackMap})\\\",\\\"patchFetch\\\":\\\"$E(function patchFetch() {\\\\n    return (0, _patchfetch.patchFetch)({\\\\n        workAsyncStorage: _workasyncstorageexternal.workAsyncStorage,\\\\n        workUnitAsyncStorage: _workunitasyncstorageexternal.workUnitAsyncStorage\\\\n    });\\\\n})\\\",\\\"preconnect\\\":\\\"$E(function preconnect(href, crossOrigin, nonce) {\\\\n    const opts = {};\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    ;\\\\n    _reactdom.default.preconnect(href, opts);\\\\n})\\\",\\\"preloadFont\\\":\\\"$E(function preloadFont(href, type, crossOrigin, nonce) {\\\\n    const opts = {\\\\n        as: 'font',\\\\n        type\\\\n    };\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    _reactdom.default.preload(href, opts);\\\\n})\\\",\\\"preloadStyle\\\":\\\"$E(function preloadStyle(href, crossOrigin, nonce) {\\\\n    const opts = {\\\\n        as: 'style'\\\\n    };\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    _reactdom.default.preload(href, opts);\\\\n})\\\",\\\"prerender\\\":\\\"$E(function(model,webpackMap,options){return new Promise(function(resolve,reject){var request=new RequestInstance(PRERENDER,model,webpackMap,options?options.onError:void 0,options?options.identifierPrefix:void 0,options?options.onPostpone:void 0,options?options.temporaryReferences:void 0,options?options.environmentName:void 0,options?options.filterStackFrame:void 0,function(){resolve({prelude:new ReadableStream({type:\\\\\\\"bytes\\\\\\\",start:function(){startWork(request)},pull:function(controller){startFlowing(request,controller)},cancel:function(reason){request.destination=null,abort(request,reason)}},{highWaterMark:0})})},reject);if(options\\u0026\\u0026options.signal){var signal=options.signal;if(signal.aborted)abort(request,signal.reason);else{var listener=function(){abort(request,signal.reason),signal.removeEventListener(\\\\\\\"abort\\\\\\\",listener)};signal.addEventListener(\\\\\\\"abort\\\\\\\",listener)}}startWork(request)})})\\\",\\\"renderToReadableStream\\\":\\\"$E(function(model,webpackMap,options){var request=new RequestInstance(20,model,webpackMap,options?options.onError:void 0,options?options.identifierPrefix:void 0,options?options.onPostpone:void 0,options?options.temporaryReferences:void 0,options?options.environmentName:void 0,options?options.filterStackFrame:void 0,noop,noop);if(options\\u0026\\u0026options.signal){var signal=options.signal;if(signal.aborted)abort(request,signal.reason);else{var listener=function(){abort(request,signal.reason),signal.removeEventListener(\\\\\\\"abort\\\\\\\",listener)};signal.addEventListener(\\\\\\\"abort\\\\\\\",listener)}}return new ReadableStream({type:\\\\\\\"bytes\\\\\\\",start:function(){startWork(request)},pull:function(controller){startFlowing(request,controller)},cancel:function(reason){request.destination=null,abort(request,reason)}},{highWaterMark:0})})\\\",\\\"serverHooks\\\":\\\"$Y\\\",\\\"taintObjectReference\\\":\\\"$E(function(message,object){if(\\\\\\\"string\\\\\\\"==typeof object||\\\\\\\"bigint\\\\\\\"==typeof object)throw Error(\\\\\\\"Only objects or functions can be passed to taintObjectReference. Try taintUniqueValue instead.\\\\\\\");if(null===object||\\\\\\\"object\\\\\\\"!=typeof object\\u0026\\u0026\\\\\\\"function\\\\\\\"!=typeof object)throw Error(\\\\\\\"Only objects or functions can be passed to taintObjectReference.\\\\\\\");TaintRegistryObjects.set(object,\\\\\\\"\\\\\\\"+(message||\\\\\\\"A tainted value was attempted to be serialized to a Client Component or Action closure. This would leak it to the client.\\\\\\\"))})\\\",\\\"workAsyncStorage\\\":\\\"$Y\\\",\\\"workUnitAsyncStorage\\\":\\\"$Y\\\"},\\\"url\\\":\\\"$Y\\\",\\\"renderOpts\\\":\\\"$Y\\\",\\\"workStore\\\":\\\"$Y\\\",\\\"parsedRequestHeaders\\\":\\\"$Y\\\",\\\"getDynamicParamFromSegment\\\":\\\"$E(function(segment){let segmentParam=getSegmentParam(segment);if(!segmentParam)return null;let key=segmentParam.param,value1=params[key];if(fallbackRouteParams\\u0026\\u0026fallbackRouteParams.has(segmentParam.param)?value1=fallbackRouteParams.get(segmentParam.param):Array.isArray(value1)?value1=value1.map(i=\\u003eencodeURIComponent(i)):\\\\\\\"string\\\\\\\"==typeof value1\\u0026\\u0026(value1=encodeURIComponent(value1)),!value1){let isCatchall=\\\\\\\"catchall\\\\\\\"===segmentParam.type,isOptionalCatchall=\\\\\\\"optional-catchall\\\\\\\"===segmentParam.type;if(isCatchall||isOptionalCatchall){let dynamicParamType=dynamicParamTypes[segmentParam.type];return isOptionalCatchall?{param:key,value:null,type:dynamicParamType,treeSegment:[key,\\\\\\\"\\\\\\\",dynamicParamType]}:{param:key,value:value1=pagePath.split(\\\\\\\"/\\\\\\\").slice(1).flatMap(pathSegment=\\u003e{let param=function(param){let match=param.match(PARAMETER_PATTERN);return match?parseMatchedParameter(match[1]):parseMatchedParameter(param)}(pathSegment);return params[param.key]??param.key}),type:dynamicParamType,treeSegment:[key,value1.join(\\\\\\\"/\\\\\\\"),dynamicParamType]}}}let type=function(type){let short=dynamicParamTypes[type];if(!short)throw Object.defineProperty(Error(\\\\\\\"Unknown dynamic param type\\\\\\\"),\\\\\\\"__NEXT_ERROR_CODE\\\\\\\",{value:\\\\\\\"E378\\\\\\\",enumerable:!1});return short}(segmentParam.type);return{param:key,value:value1,treeSegment:[key,Array.isArray(value1)?value1.join(\\\\\\\"/\\\\\\\"):value1,type],type:type}})\\\",\\\"query\\\":\\\"$Y\\\",\\\"isPrefetch\\\":false,\\\"isAction\\\":false,\\\"requestTimestamp\\\":1736688104324,\\\"appUsingSizeAdjustment\\\":false,\\\"flightRouterState\\\":\\\"$undefined\\\",\\\"requestId\\\":\\\"AYB_mrMDxzYUJ2wFiPE6s\\\",\\\"pagePath\\\":\\\"/\\\",\\\"clientReferenceManifest\\\":\\\"$Y\\\",\\\"assetPrefix\\\":\\\"\\\",\\\"isNotFoundPath\\\":false,\\\"nonce\\\":\\\"$undefined\\\",\\\"res\\\":\\\"$Y\\\",\\\"sharedContext\\\":\\\"$Y\\\"}}}\\n\"])</script><script>self.__next_f.push([1,\"30:D{\\\"time\\\":29.124479293823242}\\n30:D\\\"$34\\\"\\n30:D{\\\"time\\\":29.157413482666016}\\n30:null\\n36:{\\\"name\\\":\\\"ViewportTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":\\\"AYB_mrMDxzYUJ2wFiPE6s\\\",\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n35:D{\\\"time\\\":29.3327693939209}\\n35:D\\\"$36\\\"\\n35:D{\\\"time\\\":29.446386337280273}\\n38:{\\\"name\\\":\\\"__next_viewport_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$36\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n37:D{\\\"time\\\":29.593244552612305}\\n37:D\\\"$38\\\"\\n35:[\\\"$\\\",\\\"$c\\\",\\\"AYB_mrMDxzYUJ2wFiPE6s\\\",{\\\"children\\\":[[\\\"$\\\",\\\"$L33\\\",null,{\\\"children\\\":\\\"$L37\\\"},\\\"$36\\\",[],1],null]},null,null,0]\\n39:[]\\n\"])</script><script>self.__next_f.push([1,\"0:{\\\"P\\\":\\\"$1\\\",\\\"b\\\":\\\"development\\\",\\\"p\\\":\\\"\\\",\\\"c\\\":[\\\"\\\",\\\"\\\"],\\\"i\\\":false,\\\"f\\\":[[[\\\"\\\",{\\\"audience\\\":[\\\"__PAGE__\\\",{\\\"children\\\":[\\\"__PAGE__\\\",{}]}],\\\"children\\\":[\\\"__PAGE__\\\",{}]},\\\"$undefined\\\",\\\"$undefined\\\",true],[\\\"\\\",[\\\"$\\\",\\\"$L3\\\",\\\"c\\\",{\\\"notFound\\\":[[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/css/app/layout.css?v=1736688104324\\\",\\\"precedence\\\":\\\"next_static/css/app/layout.css\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"},null,[],0]],[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$5\\\",\\\"slots\\\":{\\\"children\\\":[\\\"$6\\\",\\\"$9\\\",[]]},\\\"params\\\":{}},null,[],1]],\\\"forbidden\\\":null,\\\"unauthorized\\\":null,\\\"children\\\":[\\\"$0:f:0:1:1:props:notFound:0\\\",[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$5\\\",\\\"slots\\\":{\\\"audience\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"audience\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0],\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$0:f:0:1:1:props:notFound:1:props:slots:children\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0]},\\\"params\\\":\\\"$0:f:0:1:1:props:notFound:1:props:params\\\"},null,[],1]]},null,[],0],{\\\"audience\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$14\\\",\\\"slots\\\":{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0]},\\\"params\\\":\\\"$0:f:0:1:1:props:notFound:1:props:params\\\"},null,[],1]]},null,[],0],{\\\"children\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[\\\"$15\\\",\\\"$17\\\",null,[\\\"$\\\",\\\"$L1e\\\",null,{\\\"children\\\":[\\\"$L1f\\\",\\\"$L21\\\"]},null,[],1]]},null,[],0],{},null,false]},null,false],\\\"children\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[\\\"$23\\\",\\\"$25\\\",null,[\\\"$\\\",\\\"$L1e\\\",null,{\\\"children\\\":[\\\"$L2c\\\",\\\"$L2e\\\"]},null,[],1]]},null,[],0],{},null,false]},null,false],[[\\\"$\\\",\\\"$c\\\",\\\"v\\\",{\\\"children\\\":[\\\"$30\\\",\\\"$35\\\"]},null,[],0],null],false]],\\\"m\\\":\\\"$W39\\\",\\\"G\\\":[\\\"$31\\\",\\\"$undefined\\\"],\\\"s\\\":false,\\\"S\\\":false}\\n\"])</script><script>self.__next_f.push([1,\"1f:D{\\\"time\\\":29.787050247192383}\\n1f:null\\n21:D{\\\"time\\\":29.79611587524414}\\n21:null\\n\"])</script><script>self.__next_f.push([1,\"37:D{\\\"time\\\":43.700849533081055}\\n37:[[\\\"$\\\",\\\"meta\\\",\\\"0\\\",{\\\"charSet\\\":\\\"utf-8\\\"},\\\"$2d\\\",[],0],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"viewport\\\",\\\"content\\\":\\\"width=device-width, initial-scale=1\\\"},\\\"$2d\\\",[],0]]\\n10:D{\\\"time\\\":43.854610443115234}\\n10:[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\",\\\"type\\\":\\\"image/x-icon\\\",\\\"sizes\\\":\\\"16x16\\\"},\\\"$11\\\",[],0],[\\\"$\\\",\\\"link\\\",\\\"1\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\",\\\"type\\\":\\\"image/x-icon\\\",\\\"sizes\\\":\\\"16x16\\\"},\\\"$11\\\",[],0]]\\n1c:D{\\\"time\\\":44.039289474487305}\\n1c:\\\"$10\\\"\\n2a:D{\\\"time\\\":44.049652099609375}\\n2a:\\\"$10\\\"\\n2e:D{\\\"time\\\":44.05327033996582}\\n2e:null\\n2c:D{\\\"time\\\":44.0612907409668}\\n2c:null\\n\"])</script></body></html>"

  21 |   it('should work with html', async () => {
  22 |     const html = await next.render('/')
> 23 |     expect(html).toContain('hello world')
     |                  ^
  24 |   })
  25 |
  26 |   // In case you need to test the response object.

  at Object.toContain (e2e/app-dir/hello-world/hello-world.test.ts:23:18)

● hello-world › should work with fetch

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

Expected substring: "hello world"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><link rel=\"stylesheet\" href=\"/_next/static/css/app/layout.css?v=1736688104401\" data-precedence=\"next_static/css/app/layout.css\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/webpack.js?v=1736688104401\"/><script src=\"/_next/static/chunks/main-app.js?v=1736688104401\" async=\"\"></script><script src=\"/_next/static/chunks/app-pages-internals.js\" async=\"\"></script><script src=\"/_next/static/chunks/app/layout.js\" async=\"\"></script><script src=\"/_next/static/chunks/app/%40audience/layout.js\" async=\"\"></script><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" sizes=\"16x16\"/><script src=\"/_next/static/chunks/polyfills.js\" noModule=\"\"></script></head><body><fieldset><legend>app/layout</legend><fieldset><legend>app/page</legend></fieldset><fieldset><legend>app/@audience/layout</legend><ul><li><a href=\"/\">home</a></li><li><a href=\"/one\">one</a></li><li><a href=\"/two\">two</a></li></ul><fieldset><legend>app/@audience/page</legend></fieldset></fieldset></fieldset><script src=\"/_next/static/chunks/webpack.js?v=1736688104401\" async=\"\"></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,\"3:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"HTTPAccessFallbackBoundary\\\"]\\n4:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/client-segment.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ClientSegmentRoot\\\"]\\n5:I[\\\"(app-pages-browser)/./app/layout.tsx\\\",[\\\"app/layout\\\",\\\"static/chunks/app/layout.js\\\"],\\\"default\\\"]\\nc:\\\"$Sreact.fragment\\\"\\nf:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"MetadataBoundary\\\"]\\n12:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/layout-router.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n13:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/render-from-template-context.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n14:I[\\\"(app-pages-browser)/./app/@audience/layout.js\\\",[\\\"app/@audience/layout\\\",\\\"static/chunks/app/%40audience/layout.js\\\"],\\\"default\\\"]\\n1e:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pa\"])</script><script>self.__next_f.push([1,\"ges-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"OutletBoundary\\\"]\\n31:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/error-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"\\\"]\\n32:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/client/components/client-page.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ClientPageRoot\\\"]\\n33:I[\\\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-490e07170631d8a0f72009d6c32f8cb7c435565a778586d604abcb09756e2ab0+packa_ksorzwx7aw7htrudryuvz6s4he/node_modules/next/dist/lib/metadata/metadata-boundary.js\\\",[\\\"app-pages-internals\\\",\\\"static/chunks/app-pages-internals.js\\\"],\\\"ViewportBoundary\\\"]\\n:HL[\\\"/_next/static/css/app/layout.css?v=1736688104401\\\",\\\"style\\\"]\\n:N1736688104411.3245\\n2:{\\\"name\\\":\\\"Preloads\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"preloadCallbacks\\\":[\\\"$E(()=\\u003e{ctx.componentMod.preloadStyle(fullHref,ctx.renderOpts.crossOrigin,ctx.nonce)})\\\"]}}\\n1:D{\\\"time\\\":0.5019645690917969}\\n1:D\\\"$2\\\"\\n1:D{\\\"time\\\":0.5739212036132812}\\n1:null\\n7:{\\\"name\\\":\\\"NotFound\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n6:D{\\\"time\\\":1.6822242736816406}\\n6:D\\\"$7\\\"\\n8:{\\\"name\\\":\\\"HTTPAccessErrorFallback\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$7\\\",\\\"stack\\\":[],\\\"props\\\":{\\\"status\\\":404,\\\"message\\\":\\\"This page could not be found.\\\"}}\\n6:D{\\\"time\\\":1.8740921020507812}\\n6:D\\\"$8\\\"\\n6:D{\\\"time\\\":2.164640426635742}\\n6:[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"404: This page could not be found.\\\"},\\\"$8\\\",[],1],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"fontFamily\\\":\\\"system-ui,\\\\\\\"Segoe UI\\\\\\\",Roboto,Helvetica,Arial,sans-serif,\\\\\\\"Apple Color Emoji\\\\\\\",\\\\\\\"Segoe UI Emoji\\\\\\\"\\\",\\\"height\\\":\\\"100vh\\\",\\\"textAlign\\\":\\\"center\\\",\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"alignItems\\\":\\\"center\\\",\\\"justifyContent\\\":\\\"center\\\"},\\\"children\\\":[\\\"$\\\",\\\"d\"])</script><script>self.__next_f.push([1,\"iv\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"style\\\",null,{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\\\"}},\\\"$8\\\",[],1],[\\\"$\\\",\\\"h1\\\",null,{\\\"className\\\":\\\"next-error-h1\\\",\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\",\\\"margin\\\":\\\"0 20px 0 0\\\",\\\"padding\\\":\\\"0 23px 0 0\\\",\\\"fontSize\\\":24,\\\"fontWeight\\\":500,\\\"verticalAlign\\\":\\\"top\\\",\\\"lineHeight\\\":\\\"49px\\\"},\\\"children\\\":404},\\\"$8\\\",[],1],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\"},\\\"children\\\":[\\\"$\\\",\\\"h2\\\",null,{\\\"style\\\":{\\\"fontSize\\\":14,\\\"fontWeight\\\":400,\\\"lineHeight\\\":\\\"49px\\\",\\\"margin\\\":0},\\\"children\\\":\\\"This page could not be found.\\\"},\\\"$8\\\",[],1]},\\\"$8\\\",[],1]]},\\\"$8\\\",[],1]},\\\"$8\\\",[],1]]\\na:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n9:D{\\\"time\\\":3.0970306396484375}\\n9:D\\\"$a\\\"\\nb:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n9:D{\\\"time\\\":3.255939483642578}\\n9:D\\\"$b\\\"\\n9:D{\\\"time\\\":3.438570022583008}\\ne:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\nd:D{\\\"time\\\":3.588306427001953}\\nd:D\\\"$e\\\"\\nd:D{\\\"time\\\":3.7682037353515625}\\n11:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$e\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n10:D{\\\"time\\\":3.931713104248047}\\n10:D\\\"$11\\\"\\nd:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L10\\\"},\\\"$e\\\",[],1]\\n9:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$d\\\"},null,[],1]]\\n16:{\\\"name\\\":\\\"AudiencePage\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"params\\\":\\\"$@\\\",\\\"searchParams\\\":\\\"$@\\\"}}\\n15:D{\\\"time\\\":7.613851547241211}\\n15:D\\\"$16\\\"\\n15:D{\\\"time\\\":7.861547470092773}\\n15:[\\\"$\\\",\\\"fieldset\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"legend\\\",null,{\\\"children\\\":\\\"app/@audience/page\\\"},\\\"$16\\\",[[\\\"AudiencePage\\\",\\\"webpack-internal:///(rsc)/./app/@audience/page.js\\\",10,94]],1]},\\\"$16\\\",[[\\\"AudiencePage\\\",\\\"webpack-internal:///(rsc)/./app/@audience/page.js\\\",9,87]],1]\\n18:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n17:D{\\\"time\\\":8.18331527709961}\\n17:D\\\"$18\\\"\\n19:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"own\"])</script><script>self.__next_f.push([1,\"er\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n17:D{\\\"time\\\":8.323543548583984}\\n17:D\\\"$19\\\"\\n17:D{\\\"time\\\":8.466024398803711}\\n1b:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n1a:D{\\\"time\\\":8.581306457519531}\\n1a:D\\\"$1b\\\"\\n1a:D{\\\"time\\\":8.735437393188477}\\n1d:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$1b\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n1c:D{\\\"time\\\":8.849903106689453}\\n1c:D\\\"$1d\\\"\\n1a:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L1c\\\"},\\\"$1b\\\",[],1]\\n17:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$1a\\\"},null,[],1]]\\n20:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(()=\\u003ePromise.resolve())\\\"}}\\n1f:D{\\\"time\\\":9.369865417480469}\\n1f:D\\\"$20\\\"\\n22:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(()=\\u003ePromise.resolve())\\\"}}\\n21:D{\\\"time\\\":9.626394271850586}\\n21:D\\\"$22\\\"\\n24:{\\\"name\\\":\\\"Page\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"params\\\":\\\"$@\\\",\\\"searchParams\\\":\\\"$@\\\"}}\\n23:D{\\\"time\\\":10.079496383666992}\\n23:D\\\"$24\\\"\\n23:D{\\\"time\\\":10.271427154541016}\\n23:[\\\"$\\\",\\\"fieldset\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"legend\\\",null,{\\\"children\\\":\\\"app/page\\\"},\\\"$24\\\",[[\\\"Page\\\",\\\"webpack-internal:///(rsc)/./app/page.tsx\\\",10,94]],1]},\\\"$24\\\",[[\\\"Page\\\",\\\"webpack-internal:///(rsc)/./app/page.tsx\\\",9,87]],1]\\n26:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n25:D{\\\"time\\\":10.592254638671875}\\n25:D\\\"$26\\\"\\n27:{\\\"name\\\":\\\"\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n25:D{\\\"time\\\":10.717899322509766}\\n25:D\\\"$27\\\"\\n25:D{\\\"time\\\":10.86439323425293}\\n29:{\\\"name\\\":\\\"MetadataTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n28:D{\\\"time\\\":10.988277435302734}\\n28:D\\\"$29\\\"\\n28:D{\\\"time\\\":11.14061164855957}\\n2b:{\\\"name\\\":\\\"__next_metadata_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$29\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n2a:D{\\\"time\\\":11.261005401611328}\\n2a:D\\\"$2b\\\"\\n28:[\\\"$\\\",\\\"$Lf\\\",null,{\\\"children\\\":\\\"$L2a\\\"},\\\"$29\\\",[],1]\\n25:[[\\\"$\\\",\\\"$c\\\",\\\"h\\\",{\\\"children\\\":\\\"$28\\\"},null,[],1]]\\n2d:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(as\"])</script><script>self.__next_f.push([1,\"ync function getViewportReady() {\\\\n        await viewport();\\\\n        return undefined;\\\\n    })\\\"}}\\n2c:D{\\\"time\\\":11.704923629760742}\\n2c:D\\\"$2d\\\"\\n2f:{\\\"name\\\":\\\"__next_outlet_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ready\\\":\\\"$E(async function getMetadataReady() {\\\\n        // Only warm up metadata() call when it's blocking metadata,\\\\n        // otherwise it will be fully managed by AsyncMetadata component.\\\\n        if (!serveStreamingMetadata) {\\\\n            await metadata();\\\\n        }\\\\n        return undefined;\\\\n    })\\\"}}\\n2e:D{\\\"time\\\":11.961084365844727}\\n2e:D\\\"$2f\\\"\\n\"])</script><script>self.__next_f.push([1,\"34:{\\\"name\\\":\\\"NonIndex\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{\\\"ctx\\\":{\\\"componentMod\\\":{\\\"GlobalError\\\":\\\"$31\\\",\\\"__next_app__\\\":{\\\"require\\\":\\\"$E(function __webpack_require__(moduleId) {\\\\n/******/ \\\\t\\\\t// Check if module is in cache\\\\n/******/ \\\\t\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n/******/ \\\\t\\\\tif (cachedModule !== undefined) {\\\\n/******/ \\\\t\\\\t\\\\treturn cachedModule.exports;\\\\n/******/ \\\\t\\\\t}\\\\n/******/ \\\\t\\\\t// Create a new module (and put it into the cache)\\\\n/******/ \\\\t\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n/******/ \\\\t\\\\t\\\\tid: moduleId,\\\\n/******/ \\\\t\\\\t\\\\tloaded: false,\\\\n/******/ \\\\t\\\\t\\\\texports: {}\\\\n/******/ \\\\t\\\\t};\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Execute the module function\\\\n/******/ \\\\t\\\\tvar threw = true;\\\\n/******/ \\\\t\\\\ttry {\\\\n/******/ \\\\t\\\\t\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n/******/ \\\\t\\\\t\\\\tthrew = false;\\\\n/******/ \\\\t\\\\t} finally {\\\\n/******/ \\\\t\\\\t\\\\tif(threw) delete __webpack_module_cache__[moduleId];\\\\n/******/ \\\\t\\\\t}\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Flag the module as loaded\\\\n/******/ \\\\t\\\\tmodule.loaded = true;\\\\n/******/ \\\\t\\\\n/******/ \\\\t\\\\t// Return the exports of the module\\\\n/******/ \\\\t\\\\treturn module.exports;\\\\n/******/ \\\\t})\\\",\\\"loadChunk\\\":\\\"$E(() =\\u003e Promise.resolve())\\\"},\\\"pages\\\":[\\\"/tmp/next-install-08db3cfcad1b38cb61ad66fb976e91cc454b720d54a0e9acbdc2f8dc842c4649/app/@audience/page.js\\\",\\\"/tmp/next-install-08db3cfcad1b38cb61ad66fb976e91cc454b720d54a0e9acbdc2f8dc842c4649/app/page.tsx\\\"],\\\"routeModule\\\":{\\\"userland\\\":{\\\"loaderTree\\\":[\\\"\\\",\\\"$Y\\\",\\\"$Y\\\"]},\\\"definition\\\":\\\"$Y\\\"},\\\"tree\\\":\\\"$Y\\\",\\\"ClientPageRoot\\\":\\\"$32\\\",\\\"ClientSegmentRoot\\\":\\\"$4\\\",\\\"HTTPAccessFallbackBoundary\\\":\\\"$3\\\",\\\"LayoutRouter\\\":\\\"$12\\\",\\\"MetadataBoundary\\\":\\\"$f\\\",\\\"OutletBoundary\\\":\\\"$1e\\\",\\\"Postpone\\\":\\\"$E(function Postpone({ reason, route }) {\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    const dynamicTracking = prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\\\\n    postponeWithTracking(route, reason, dynamicTracking);\\\\n})\\\",\\\"RenderFromTemplateContext\\\":\\\"$13\\\",\\\"ViewportBoundary\\\":\\\"$33\\\",\\\"actionAsyncStorage\\\":\\\"$Y\\\",\\\"collectSegmentData\\\":\\\"$E(async function collectSegmentData(shouldAssumePartialData, fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest) {\\\\n    // Traverse the router tree and generate a prefetch response for each segment.\\\\n    // A mutable map to collect the results as we traverse the route tree.\\\\n    const resultMap = new Map();\\\\n    // Before we start, warm up the module cache by decoding the page data once.\\\\n    // Then we can assume that any remaining async tasks that occur the next time\\\\n    // are due to hanging promises caused by dynamic data access. Note we only\\\\n    // have to do this once per page, not per individual segment.\\\\n    //\\\\n    try {\\\\n        await (0, _clientedge.createFromReadableStream)((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer), {\\\\n            serverConsumerManifest\\\\n        });\\\\n        await (0, _scheduler.waitAtLeastOneReactRenderTask)();\\\\n    } catch  {}\\\\n    // Create an abort controller that we'll use to stop the stream.\\\\n    const abortController = new AbortController();\\\\n    const onCompletedProcessingRouteTree = async ()=\\u003e{\\\\n        // Since all we're doing is decoding and re-encoding a cached prerender, if\\\\n        // serializing the stream takes longer than a microtask, it must because of\\\\n        // hanging promises caused by dynamic data.\\\\n        await (0, _scheduler.waitAtLeastOneReactRenderTask)();\\\\n        abortController.abort();\\\\n    };\\\\n    // Generate a stream for the route tree prefetch. While we're walking the\\\\n    // tree, we'll also spawn additional tasks to generate the segment prefetches.\\\\n    // The promises for these tasks are pushed to a mutable array that we will\\\\n    // await once the route tree is fully rendered.\\\\n    const segmentTasks = [];\\\\n    const { prelude: treeStream } = await (0, _staticedge.unstable_prerender)(// RootTreePrefetch is not a valid return type for a React component, but\\\\n    // we need to use a component so that when we decode the original stream\\\\n    // inside of it, the side effects are transferred to the new stream.\\\\n    // @ts-expect-error\\\\n    /*#__PURE__*/ (0, _jsxruntime.jsx)(PrefetchTreeData, {\\\\n        shouldAssumePartialData: shouldAssumePartialData,\\\\n        fullPageDataBuffer: fullPageDataBuffer,\\\\n        serverConsumerManifest: serverConsumerManifest,\\\\n        clientModules: clientModules,\\\\n        staleTime: staleTime,\\\\n        segmentTasks: segmentTasks,\\\\n        onCompletedProcessingRouteTree: onCompletedProcessingRouteTree\\\\n    }), clientModules, {\\\\n        signal: abortController.signal,\\\\n        onError: onSegmentPrerenderError\\\\n    });\\\\n    // Write the route tree to a special `/_tree` segment.\\\\n    const treeBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(treeStream);\\\\n    resultMap.set('/_tree', treeBuffer);\\\\n    // Now that we've finished rendering the route tree, all the segment tasks\\\\n    // should have been spawned. Await them in parallel and write the segment\\\\n    // prefetches to the result map.\\\\n    for (const [segmentPath, buffer] of (await Promise.all(segmentTasks))){\\\\n        resultMap.set(segmentPath, buffer);\\\\n    }\\\\n    return resultMap;\\\\n})\\\",\\\"createMetadataComponents\\\":\\\"$E(function createMetadataComponents({ tree, searchParams, metadataContext, getDynamicParamFromSegment, appUsingSizeAdjustment, errorType, createServerParamsForMetadata, workStore, MetadataBoundary, ViewportBoundary, serveStreamingMetadata }) {\\\\n    function ViewportTree() {\\\\n        return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\\\\n            children: [\\\\n                /*#__PURE__*/ (0, _jsxruntime.jsx)(ViewportBoundary, {\\\\n                    children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Viewport, {})\\\\n                }),\\\\n                appUsingSizeAdjustment ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\\\\\\\"meta\\\\\\\", {\\\\n                    name: \\\\\\\"next-size-adjust\\\\\\\",\\\\n                    content: \\\\\\\"\\\\\\\"\\\\n                }) : null\\\\n            ]\\\\n        });\\\\n    }\\\\n    function MetadataTree() {\\\\n        return /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataBoundary, {\\\\n            children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Metadata, {})\\\\n        });\\\\n    }\\\\n    function viewport() {\\\\n        return getResolvedViewport(tree, searchParams, getDynamicParamFromSegment, createServerParamsForMetadata, workStore, errorType);\\\\n    }\\\\n    async function Viewport() {\\\\n        try {\\\\n            return await viewport();\\\\n        } catch (error) {\\\\n            if (!errorType \\u0026\\u0026 (0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\\\\n                try {\\\\n                    return await getNotFoundViewport(tree, searchParams, getDynamicParamFromSegment, createServerParamsForMetadata, workStore);\\\\n                } catch  {}\\\\n            }\\\\n            // We don't actually want to error in this component. We will\\\\n            // also error in the MetadataOutlet which causes the error to\\\\n            // bubble from the right position in the page to be caught by the\\\\n            // appropriate boundaries\\\\n            return null;\\\\n        }\\\\n    }\\\\n    Viewport.displayName = _metadataconstants.VIEWPORT_BOUNDARY_NAME;\\\\n    function metadata() {\\\\n        return getResolvedMetadata(tree, searchParams, getDynamicParamFromSegment, metadataContext, createServerParamsForMetadata, workStore, errorType);\\\\n    }\\\\n    async function resolveFinalMetadata() {\\\\n        try {\\\\n            return await metadata();\\\\n        } catch (error) {\\\\n            if (!errorType \\u0026\\u0026 (0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\\\\n                try {\\\\n                    return await getNotFoundMetadata(tree, searchParams, getDynamicParamFromSegment, metadataContext, createServerParamsForMetadata, workStore);\\\\n                } catch  {}\\\\n            }\\\\n            // We don't actually want to error in this component. We will\\\\n            // also error in the MetadataOutlet which causes the error to\\\\n            // bubble from the right position in the page to be caught by the\\\\n            // appropriate boundaries\\\\n            return null;\\\\n        }\\\\n    }\\\\n    async function Metadata() {\\\\n        if (serveStreamingMetadata) {\\\\n            return /*#__PURE__*/ (0, _jsxruntime.jsx)(_asyncmetadata.AsyncMetadata, {\\\\n                promise: resolveFinalMetadata()\\\\n            });\\\\n        }\\\\n        return await resolveFinalMetadata();\\\\n    }\\\\n    Metadata.displayName = _metadataconstants.METADATA_BOUNDARY_NAME;\\\\n    async function getMetadataReady() {\\\\n        // Only warm up metadata() call when it's blocking metadata,\\\\n        // otherwise it will be fully managed by AsyncMetadata component.\\\\n        if (!serveStreamingMetadata) {\\\\n            await metadata();\\\\n        }\\\\n        return undefined;\\\\n    }\\\\n    async function getViewportReady() {\\\\n        await viewport();\\\\n        return undefined;\\\\n    }\\\\n    return {\\\\n        ViewportTree,\\\\n        MetadataTree,\\\\n        getViewportReady,\\\\n        getMetadataReady\\\\n    };\\\\n})\\\",\\\"createPrerenderParamsForClientSegment\\\":\\\"$E(function createPrerenderParamsForClientSegment(underlyingParams, workStore) {\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender') {\\\\n        const fallbackParams = workStore.fallbackRouteParams;\\\\n        if (fallbackParams) {\\\\n            for(let key in underlyingParams){\\\\n                if (fallbackParams.has(key)) {\\\\n                    // This params object has one of more fallback params so we need to consider\\\\n                    // the awaiting of this params object \\\\\\\"dynamic\\\\\\\". Since we are in dynamicIO mode\\\\n                    // we encode this as a promise that never resolves\\\\n                    return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, '`params`');\\\\n                }\\\\n            }\\\\n        }\\\\n    }\\\\n    // We're prerendering in a mode that does not abort. We resolve the promise without\\\\n    // any tracking because we're just transporting a value from server to client where the tracking\\\\n    // will be applied.\\\\n    return Promise.resolve(underlyingParams);\\\\n})\\\",\\\"createPrerenderSearchParamsForClientPage\\\":\\\"$E(function createPrerenderSearchParamsForClientPage(workStore) {\\\\n    if (workStore.forceStatic) {\\\\n        // When using forceStatic we override all other logic and always just return an empty\\\\n        // dictionary object.\\\\n        return Promise.resolve({});\\\\n    }\\\\n    const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (prerenderStore \\u0026\\u0026 prerenderStore.type === 'prerender') {\\\\n        // dynamicIO Prerender\\\\n        // We're prerendering in a mode that aborts (dynamicIO) and should stall\\\\n        // the promise to ensure the RSC side is considered dynamic\\\\n        return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, '`searchParams`');\\\\n    }\\\\n    // We're prerendering in a mode that does not aborts. We resolve the promise without\\\\n    // any tracking because we're just transporting a value from server to client where the tracking\\\\n    // will be applied.\\\\n    return Promise.resolve({});\\\\n})\\\",\\\"createServerParamsForMetadata\\\":\\\"$E(function createServerParamsForServerSegment(underlyingParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderParams(underlyingParams, workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderParams(underlyingParams, workStore);\\\\n})\\\",\\\"createServerParamsForServerSegment\\\":\\\"$E(function createServerParamsForServerSegment(underlyingParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderParams(underlyingParams, workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderParams(underlyingParams, workStore);\\\\n})\\\",\\\"createServerSearchParamsForMetadata\\\":\\\"$E(function createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderSearchParams(workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderSearchParams(underlyingSearchParams, workStore);\\\\n})\\\",\\\"createServerSearchParamsForServerPage\\\":\\\"$E(function createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\\\\n    const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\\\\n    if (workUnitStore) {\\\\n        switch(workUnitStore.type){\\\\n            case 'prerender':\\\\n            case 'prerender-ppr':\\\\n            case 'prerender-legacy':\\\\n                return createPrerenderSearchParams(workStore, workUnitStore);\\\\n            default:\\\\n        }\\\\n    }\\\\n    return createRenderSearchParams(underlyingSearchParams, workStore);\\\\n})\\\",\\\"createTemporaryReferenceSet\\\":\\\"$E(function(){return new WeakMap})\\\",\\\"decodeAction\\\":\\\"$E(function(body,serverManifest){var formData=new FormData,action=null;return body.forEach(function(value1,key){key.startsWith(\\\\\\\"$ACTION_\\\\\\\")?key.startsWith(\\\\\\\"$ACTION_REF_\\\\\\\")?(value1=decodeBoundActionMetaData(body,serverManifest,value1=\\\\\\\"$ACTION_\\\\\\\"+key.slice(12)+\\\\\\\":\\\\\\\"),action=loadServerReference(serverManifest,value1.id,value1.bound)):key.startsWith(\\\\\\\"$ACTION_ID_\\\\\\\")\\u0026\\u0026(action=loadServerReference(serverManifest,value1=key.slice(11),null)):formData.append(key,value1)}),null===action?null:action.then(function(fn){return fn.bind(null,formData)})})\\\",\\\"decodeFormState\\\":\\\"$E(function(actionResult,body,serverManifest){var keyPath=body.get(\\\\\\\"$ACTION_KEY\\\\\\\");if(\\\\\\\"string\\\\\\\"!=typeof keyPath)return Promise.resolve(null);var metaData=null;if(body.forEach(function(value1,key){key.startsWith(\\\\\\\"$ACTION_REF_\\\\\\\")\\u0026\\u0026(metaData=decodeBoundActionMetaData(body,serverManifest,\\\\\\\"$ACTION_\\\\\\\"+key.slice(12)+\\\\\\\":\\\\\\\"))}),null===metaData)return Promise.resolve(null);var referenceId=metaData.id;return Promise.resolve(metaData.bound).then(function(bound){return null===bound?null:[actionResult,keyPath,referenceId,bound.length-1]})})\\\",\\\"decodeReply\\\":\\\"$E(function(body,webpackMap,options){if(\\\\\\\"string\\\\\\\"==typeof body){var form=new FormData;form.append(\\\\\\\"0\\\\\\\",body),body=form}return webpackMap=getChunk(body=createResponse(webpackMap,\\\\\\\"\\\\\\\",options?options.temporaryReferences:void 0,body),0),close1(body),webpackMap})\\\",\\\"patchFetch\\\":\\\"$E(function patchFetch() {\\\\n    return (0, _patchfetch.patchFetch)({\\\\n        workAsyncStorage: _workasyncstorageexternal.workAsyncStorage,\\\\n        workUnitAsyncStorage: _workunitasyncstorageexternal.workUnitAsyncStorage\\\\n    });\\\\n})\\\",\\\"preconnect\\\":\\\"$E(function preconnect(href, crossOrigin, nonce) {\\\\n    const opts = {};\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    ;\\\\n    _reactdom.default.preconnect(href, opts);\\\\n})\\\",\\\"preloadFont\\\":\\\"$E(function preloadFont(href, type, crossOrigin, nonce) {\\\\n    const opts = {\\\\n        as: 'font',\\\\n        type\\\\n    };\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    _reactdom.default.preload(href, opts);\\\\n})\\\",\\\"preloadStyle\\\":\\\"$E(function preloadStyle(href, crossOrigin, nonce) {\\\\n    const opts = {\\\\n        as: 'style'\\\\n    };\\\\n    if (typeof crossOrigin === 'string') {\\\\n        opts.crossOrigin = crossOrigin;\\\\n    }\\\\n    if (typeof nonce === 'string') {\\\\n        opts.nonce = nonce;\\\\n    }\\\\n    _reactdom.default.preload(href, opts);\\\\n})\\\",\\\"prerender\\\":\\\"$E(function(model,webpackMap,options){return new Promise(function(resolve,reject){var request=new RequestInstance(PRERENDER,model,webpackMap,options?options.onError:void 0,options?options.identifierPrefix:void 0,options?options.onPostpone:void 0,options?options.temporaryReferences:void 0,options?options.environmentName:void 0,options?options.filterStackFrame:void 0,function(){resolve({prelude:new ReadableStream({type:\\\\\\\"bytes\\\\\\\",start:function(){startWork(request)},pull:function(controller){startFlowing(request,controller)},cancel:function(reason){request.destination=null,abort(request,reason)}},{highWaterMark:0})})},reject);if(options\\u0026\\u0026options.signal){var signal=options.signal;if(signal.aborted)abort(request,signal.reason);else{var listener=function(){abort(request,signal.reason),signal.removeEventListener(\\\\\\\"abort\\\\\\\",listener)};signal.addEventListener(\\\\\\\"abort\\\\\\\",listener)}}startWork(request)})})\\\",\\\"renderToReadableStream\\\":\\\"$E(function(model,webpackMap,options){var request=new RequestInstance(20,model,webpackMap,options?options.onError:void 0,options?options.identifierPrefix:void 0,options?options.onPostpone:void 0,options?options.temporaryReferences:void 0,options?options.environmentName:void 0,options?options.filterStackFrame:void 0,noop,noop);if(options\\u0026\\u0026options.signal){var signal=options.signal;if(signal.aborted)abort(request,signal.reason);else{var listener=function(){abort(request,signal.reason),signal.removeEventListener(\\\\\\\"abort\\\\\\\",listener)};signal.addEventListener(\\\\\\\"abort\\\\\\\",listener)}}return new ReadableStream({type:\\\\\\\"bytes\\\\\\\",start:function(){startWork(request)},pull:function(controller){startFlowing(request,controller)},cancel:function(reason){request.destination=null,abort(request,reason)}},{highWaterMark:0})})\\\",\\\"serverHooks\\\":\\\"$Y\\\",\\\"taintObjectReference\\\":\\\"$E(function(message,object){if(\\\\\\\"string\\\\\\\"==typeof object||\\\\\\\"bigint\\\\\\\"==typeof object)throw Error(\\\\\\\"Only objects or functions can be passed to taintObjectReference. Try taintUniqueValue instead.\\\\\\\");if(null===object||\\\\\\\"object\\\\\\\"!=typeof object\\u0026\\u0026\\\\\\\"function\\\\\\\"!=typeof object)throw Error(\\\\\\\"Only objects or functions can be passed to taintObjectReference.\\\\\\\");TaintRegistryObjects.set(object,\\\\\\\"\\\\\\\"+(message||\\\\\\\"A tainted value was attempted to be serialized to a Client Component or Action closure. This would leak it to the client.\\\\\\\"))})\\\",\\\"workAsyncStorage\\\":\\\"$Y\\\",\\\"workUnitAsyncStorage\\\":\\\"$Y\\\"},\\\"url\\\":\\\"$Y\\\",\\\"renderOpts\\\":\\\"$Y\\\",\\\"workStore\\\":\\\"$Y\\\",\\\"parsedRequestHeaders\\\":\\\"$Y\\\",\\\"getDynamicParamFromSegment\\\":\\\"$E(function(segment){let segmentParam=getSegmentParam(segment);if(!segmentParam)return null;let key=segmentParam.param,value1=params[key];if(fallbackRouteParams\\u0026\\u0026fallbackRouteParams.has(segmentParam.param)?value1=fallbackRouteParams.get(segmentParam.param):Array.isArray(value1)?value1=value1.map(i=\\u003eencodeURIComponent(i)):\\\\\\\"string\\\\\\\"==typeof value1\\u0026\\u0026(value1=encodeURIComponent(value1)),!value1){let isCatchall=\\\\\\\"catchall\\\\\\\"===segmentParam.type,isOptionalCatchall=\\\\\\\"optional-catchall\\\\\\\"===segmentParam.type;if(isCatchall||isOptionalCatchall){let dynamicParamType=dynamicParamTypes[segmentParam.type];return isOptionalCatchall?{param:key,value:null,type:dynamicParamType,treeSegment:[key,\\\\\\\"\\\\\\\",dynamicParamType]}:{param:key,value:value1=pagePath.split(\\\\\\\"/\\\\\\\").slice(1).flatMap(pathSegment=\\u003e{let param=function(param){let match=param.match(PARAMETER_PATTERN);return match?parseMatchedParameter(match[1]):parseMatchedParameter(param)}(pathSegment);return params[param.key]??param.key}),type:dynamicParamType,treeSegment:[key,value1.join(\\\\\\\"/\\\\\\\"),dynamicParamType]}}}let type=function(type){let short=dynamicParamTypes[type];if(!short)throw Object.defineProperty(Error(\\\\\\\"Unknown dynamic param type\\\\\\\"),\\\\\\\"__NEXT_ERROR_CODE\\\\\\\",{value:\\\\\\\"E378\\\\\\\",enumerable:!1});return short}(segmentParam.type);return{param:key,value:value1,treeSegment:[key,Array.isArray(value1)?value1.join(\\\\\\\"/\\\\\\\"):value1,type],type:type}})\\\",\\\"query\\\":\\\"$Y\\\",\\\"isPrefetch\\\":false,\\\"isAction\\\":false,\\\"requestTimestamp\\\":1736688104401,\\\"appUsingSizeAdjustment\\\":false,\\\"flightRouterState\\\":\\\"$undefined\\\",\\\"requestId\\\":\\\"t4AiiFYSzTk-u7GE98Vba\\\",\\\"pagePath\\\":\\\"/\\\",\\\"clientReferenceManifest\\\":\\\"$Y\\\",\\\"assetPrefix\\\":\\\"\\\",\\\"isNotFoundPath\\\":false,\\\"nonce\\\":\\\"$undefined\\\",\\\"res\\\":\\\"$Y\\\",\\\"sharedContext\\\":\\\"$Y\\\"}}}\\n\"])</script><script>self.__next_f.push([1,\"30:D{\\\"time\\\":14.042322158813477}\\n30:D\\\"$34\\\"\\n30:D{\\\"time\\\":14.076971054077148}\\n30:null\\n36:{\\\"name\\\":\\\"ViewportTree\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":\\\"t4AiiFYSzTk-u7GE98Vba\\\",\\\"owner\\\":null,\\\"stack\\\":[],\\\"props\\\":{}}\\n35:D{\\\"time\\\":14.27425765991211}\\n35:D\\\"$36\\\"\\n35:D{\\\"time\\\":14.42677116394043}\\n38:{\\\"name\\\":\\\"__next_viewport_boundary__\\\",\\\"env\\\":\\\"Server\\\",\\\"key\\\":null,\\\"owner\\\":\\\"$36\\\",\\\"stack\\\":[],\\\"props\\\":{}}\\n37:D{\\\"time\\\":14.634008407592773}\\n37:D\\\"$38\\\"\\n35:[\\\"$\\\",\\\"$c\\\",\\\"t4AiiFYSzTk-u7GE98Vba\\\",{\\\"children\\\":[[\\\"$\\\",\\\"$L33\\\",null,{\\\"children\\\":\\\"$L37\\\"},\\\"$36\\\",[],1],null]},null,null,0]\\n39:[]\\n\"])</script><script>self.__next_f.push([1,\"0:{\\\"P\\\":\\\"$1\\\",\\\"b\\\":\\\"development\\\",\\\"p\\\":\\\"\\\",\\\"c\\\":[\\\"\\\",\\\"\\\"],\\\"i\\\":false,\\\"f\\\":[[[\\\"\\\",{\\\"audience\\\":[\\\"__PAGE__\\\",{\\\"children\\\":[\\\"__PAGE__\\\",{}]}],\\\"children\\\":[\\\"__PAGE__\\\",{}]},\\\"$undefined\\\",\\\"$undefined\\\",true],[\\\"\\\",[\\\"$\\\",\\\"$L3\\\",\\\"c\\\",{\\\"notFound\\\":[[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/css/app/layout.css?v=1736688104401\\\",\\\"precedence\\\":\\\"next_static/css/app/layout.css\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"},null,[],0]],[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$5\\\",\\\"slots\\\":{\\\"children\\\":[\\\"$6\\\",\\\"$9\\\",[]]},\\\"params\\\":{}},null,[],1]],\\\"forbidden\\\":null,\\\"unauthorized\\\":null,\\\"children\\\":[\\\"$0:f:0:1:1:props:notFound:0\\\",[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$5\\\",\\\"slots\\\":{\\\"audience\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"audience\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0],\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$0:f:0:1:1:props:notFound:1:props:slots:children\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0]},\\\"params\\\":\\\"$0:f:0:1:1:props:notFound:1:props:params\\\"},null,[],1]]},null,[],0],{\\\"audience\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$L4\\\",null,{\\\"Component\\\":\\\"$14\\\",\\\"slots\\\":{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L13\\\",null,{},null,[],1],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"},null,[],0]},\\\"params\\\":\\\"$0:f:0:1:1:props:notFound:1:props:params\\\"},null,[],1]]},null,[],0],{\\\"children\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[\\\"$15\\\",\\\"$17\\\",null,[\\\"$\\\",\\\"$L1e\\\",null,{\\\"children\\\":[\\\"$L1f\\\",\\\"$L21\\\"]},null,[],1]]},null,[],0],{},null,false]},null,false],\\\"children\\\":[\\\"__PAGE__\\\",[\\\"$\\\",\\\"$c\\\",\\\"c\\\",{\\\"children\\\":[\\\"$23\\\",\\\"$25\\\",null,[\\\"$\\\",\\\"$L1e\\\",null,{\\\"children\\\":[\\\"$L2c\\\",\\\"$L2e\\\"]},null,[],1]]},null,[],0],{},null,false]},null,false],[[\\\"$\\\",\\\"$c\\\",\\\"v\\\",{\\\"children\\\":[\\\"$30\\\",\\\"$35\\\"]},null,[],0],null],false]],\\\"m\\\":\\\"$W39\\\",\\\"G\\\":[\\\"$31\\\",\\\"$undefined\\\"],\\\"s\\\":false,\\\"S\\\":false}\\n\"])</script><script>self.__next_f.push([1,\"1f:D{\\\"time\\\":14.887947082519531}\\n1f:null\\n21:D{\\\"time\\\":14.906999588012695}\\n21:null\\n\"])</script><script>self.__next_f.push([1,\"37:D{\\\"time\\\":31.77806854248047}\\n37:[[\\\"$\\\",\\\"meta\\\",\\\"0\\\",{\\\"charSet\\\":\\\"utf-8\\\"},\\\"$2d\\\",[],0],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"viewport\\\",\\\"content\\\":\\\"width=device-width, initial-scale=1\\\"},\\\"$2d\\\",[],0]]\\n10:D{\\\"time\\\":31.98891258239746}\\n10:[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\",\\\"type\\\":\\\"image/x-icon\\\",\\\"sizes\\\":\\\"16x16\\\"},\\\"$11\\\",[],0],[\\\"$\\\",\\\"link\\\",\\\"1\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\",\\\"type\\\":\\\"image/x-icon\\\",\\\"sizes\\\":\\\"16x16\\\"},\\\"$11\\\",[],0]]\\n1c:D{\\\"time\\\":32.15826225280762}\\n1c:\\\"$10\\\"\\n2a:D{\\\"time\\\":32.17409133911133}\\n2a:\\\"$10\\\"\\n2e:D{\\\"time\\\":32.18292045593262}\\n2e:null\\n2c:D{\\\"time\\\":32.19260025024414}\\n2c:null\\n\"])</script></body></html>"

  28 |     const res = await next.fetch('/')
  29 |     const html = await res.text()
> 30 |     expect(html).toContain('hello world')
     |                  ^
  31 |   })
  32 | })
  33 |

  at Object.toContain (e2e/app-dir/hello-world/hello-world.test.ts:30:18)

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

pnpm test test/integration/required-server-files-ssr-404/test/index.test.js (turbopack)

  • Required Server Files > production mode > should output required-server-files manifest correctly
  • Required Server Files > production mode > should render SSR page correctly
  • Required Server Files > production mode > should render dynamic SSR page correctly
  • Required Server Files > production mode > should render fallback page correctly
  • Required Server Files > production mode > should render SSR page correctly with x-matched-path
  • Required Server Files > production mode > should render dynamic SSR page correctly with x-matched-path
  • Required Server Files > production mode > should render fallback page correctly with x-matched-path and routes-matches
  • Required Server Files > production mode > should return data correctly with x-matched-path
  • Required Server Files > production mode > should render fallback optional catch-all route correctly with x-matched-path and routes-matches
  • Required Server Files > production mode > should return data correctly with x-matched-path for optional catch-all route
  • Required Server Files > production mode > should not apply trailingSlash redirect
  • Required Server Files > production mode > should normalize catch-all rewrite query values correctly
  • Required Server Files > production mode > should bubble error correctly for gip page
  • Required Server Files > production mode > should bubble error correctly for gssp page
  • Required Server Files > production mode > should bubble error correctly for gsp page
  • Required Server Files > production mode > should normalize optional values correctly for SSP page
  • Required Server Files > production mode > should normalize optional values correctly for SSG page
  • Required Server Files > production mode > should normalize optional values correctly for API page
  • Required Server Files > production mode > should match the index page correctly
  • Required Server Files > production mode > should match the root dynamic page correctly
  • Required Server Files > production mode > should handle 404s properly
Expand output

● Required Server Files › production mode › should output required-server-files manifest correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render SSR page correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render dynamic SSR page correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render fallback page correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render SSR page correctly with x-matched-path

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render dynamic SSR page correctly with x-matched-path

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render fallback page correctly with x-matched-path and routes-matches

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should return data correctly with x-matched-path

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should render fallback optional catch-all route correctly with x-matched-path and routes-matches

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should return data correctly with x-matched-path for optional catch-all route

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should not apply trailingSlash redirect

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should normalize catch-all rewrite query values correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should bubble error correctly for gip page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should bubble error correctly for gssp page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should bubble error correctly for gsp page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should normalize optional values correctly for SSP page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should normalize optional values correctly for SSG page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should normalize optional values correctly for API page

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should match the index page correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should match the root dynamic page correctly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Required Server Files › production mode › should handle 404s properly

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

  17 |     'production mode',
  18 |     () => {
> 19 |       beforeAll(async () => {
     |       ^
  20 |         await fs.remove(join(appDir, '.next'))
  21 |         await nextBuild(appDir, undefined, {
  22 |           env: {

  at beforeAll (integration/required-server-files-ssr-404/test/index.test.js:19:7)
  at integration/required-server-files-ssr-404/test/index.test.js:16:56
  at Object.describe (integration/required-server-files-ssr-404/test/index.test.js:15:1)

● Test suite failed to run

ENOENT: no such file or directory, rename '/root/actions-runner/_work/next.js/next.js/test/integration/required-server-files-ssr-404/pages-bak' -> '/root/actions-runner/_work/next.js/next.js/test/integration/required-server-files-ssr-404/pages'

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

pnpm test test/integration/build-warnings/test/index.test.js (turbopack)

  • Build warnings > production mode > should warn about missing cache in CI
Expand output

● Build warnings › production mode › should warn about missing cache in CI

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

  84 |       })
  85 |
> 86 |       it('should warn about missing cache in CI', async () => {
     |       ^
  87 |         await remove(join(appDir, '.next'))
  88 |
  89 |         let { stdout } = await nextBuild(appDir, undefined, {

  at it (integration/build-warnings/test/index.test.js:86:7)
  at integration/build-warnings/test/index.test.js:10:56
  at Object.describe (integration/build-warnings/test/index.test.js:9:1)

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

@ijjk
Copy link
Member

ijjk commented Jan 12, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
buildDuration 33s 36.5s ⚠️ +3.5s
buildDurationCached 28.5s 26.9s N/A
nodeModulesSize 417 MB 417 MB
nextStartRea..uration (ms) 1.1s 943ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
5306-HASH.js gzip 53.3 kB 53.3 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 53 kB 53 kB
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 242 B N/A
main-HASH.js gzip 34.2 kB 34.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 53 kB 53 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
index.html gzip 524 B 524 B
link.html gzip 539 B 537 B N/A
withRouter.html gzip 520 B 520 B
Overall change 1.04 kB 1.04 kB
Edge SSR bundle Size
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 207 kB 207 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
middleware-b..fest.js gzip 669 B 667 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.2 kB 31.2 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 369 kB 369 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 142 kB 142 kB
app-page-tur..prod.js gzip 138 kB 138 kB
app-page.run...dev.js gzip 357 kB 357 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.7 kB 21.7 kB
pages.runtim...dev.js gzip 27.5 kB 27.5 kB
pages.runtim..prod.js gzip 21.7 kB 21.7 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.46 MB 2.46 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/slot-layout-remount-fixture Change
0.pack gzip 2.1 MB 2.1 MB N/A
index.pack gzip 74 kB 75.7 kB ⚠️ +1.7 kB
Overall change 74 kB 75.7 kB ⚠️ +1.7 kB
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: c924221

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Next.js team PRs by the Next.js team. tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants