Skip to content

Convert test/integration to isolated tests#93247

Draft
timneutkens wants to merge 43 commits intocanaryfrom
04-15-convert_test_integration_to_isolated_tests
Draft

Convert test/integration to isolated tests#93247
timneutkens wants to merge 43 commits intocanaryfrom
04-15-convert_test_integration_to_isolated_tests

Conversation

@timneutkens
Copy link
Copy Markdown
Contributor

No description provided.

@github-actions github-actions Bot added create-next-app Related to our CLI tool for quickly starting a new Next.js application. created-by: Turbopack team PRs by the Turbopack team. tests labels Apr 25, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Failing test suites

Commit: 47c2782 | About building and testing Next.js

pnpm test-dev test/e2e/yarn-pnp/test/with-eslint.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly with-eslint (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly with-eslint

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@^18.3.5 @types/react-dom@^18.3.0 typescript@latest @types/node@^22.5.4 eslint@^9 eslint-config-next@latest

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextDevInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextDevInstance.setup (lib/next-modes/next-dev.ts:17:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-dev test/e2e/cli/cli.test.ts (job)

  • CLI Usage > dev > -p reserved (DD)
Expand output

● CLI Usage › dev › -p reserved

listen EACCES: permission denied 0.0.0.0:1

  91 |       app.on('error', reject)
  92 |       app.on('listening', () => resolve())
> 93 |       app.listen(port)
     |           ^
  94 |     })
  95 |
  96 |     const { child, exit } = await launchDevServer(

  at listen (e2e/cli/cli.test.ts:93:11)
  at runAndCaptureOutput (e2e/cli/cli.test.ts:90:11)
  at Object.runAndCaptureOutput (e2e/cli/cli.test.ts:895:40)

pnpm test-dev test/e2e/yarn-pnp/test/with-sass.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly with-sass (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly with-sass

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@^19.0.1 @types/react-dom@19.2.1 typescript@^5.7.2 @types/node@^22.10.1 sass@^1.82.0

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextDevInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextDevInstance.setup (lib/next-modes/next-dev.ts:17:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-dev test/e2e/yarn-pnp/test/mdx-pages.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly mdx-pages (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly mdx-pages

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@19.2.2 @types/react-dom@19.2.1 typescript@latest @types/node@latest @mdx-js/loader@^1.5.1 @mdx-js/react@^1.6.18 @next/mdx@/home/runner/work/next.js/next.js/packages/next-mdx/packed.tgz

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextDevInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextDevInstance.setup (lib/next-modes/next-dev.ts:17:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-dev test/e2e/500-page/500-page-build.test.ts (job)

  • 500 Page build validation > should have correct cache control for 500 page with getStaticProps (DD)
  • 500 Page build validation > does not build 500 statically with getInitialProps in _app (DD)
  • 500 Page build validation > builds 500 statically by default with no pages/500 (DD)
  • 500 Page build validation > does not build 500 statically with no pages/500 and custom getInitialProps in _error (DD)
  • 500 Page build validation > does not build 500 statically with no pages/500 and getServerSideProps in _error (DD)
Expand output

● 500 Page build validation › should have correct cache control for 500 page with getStaticProps

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

Expected: "private, no-cache, no-store, max-age=0, must-revalidate"
Received: "no-cache, must-revalidate"

  84 |       const res = await next.fetch('/err')
  85 |       expect(res.status).toBe(500)
> 86 |       expect(res.headers.get('cache-control')).toBe(
     |                                                ^
  87 |         'private, no-cache, no-store, max-age=0, must-revalidate'
  88 |       )
  89 |     } finally {

  at Object.toBe (e2e/500-page/500-page-build.test.ts:86:48)

● 500 Page build validation › does not build 500 statically with getInitialProps in _app

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

Expected substring: "custom 500 page"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script defer=\"\" noModule=\"\" src=\"/_next/static/chunks/polyfills.js\"></script><script src=\"/_next/static/chunks/webpack.js\" defer=\"\"></script><script src=\"/_next/static/chunks/main.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_app.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_error.js\" defer=\"\"></script><script src=\"/_next/static/development/_buildManifest.js\" defer=\"\"></script><script src=\"/_next/static/development/_ssgManifest.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script src=\"/_next/static/chunks/react-refresh.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"localhost\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"oops\",\"stack\":\"Error: oops\\n    at page.getInitialProps (webpack-internal:///(pages-dir-node)/./pages/err.js:7:11)\\n    at loadGetInitialProps (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/shared/lib/utils.js:141:29)\\n    at App.appGetInitialProps (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/pages/_app.js:19:60)\\n    at page.getInitialProps (webpack-internal:///(pages-dir-node)/./pages/_app.js:18:79)\\n    at loadGetInitialProps (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:1:73943)\\n    at renderToHTMLImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:13:6791)\\n    at async doRender (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:135:36)\\n    at async PagesRouteModule.handleResponse (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:1:169973)\\n    at async handleResponse (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:341:32)\\n    at async Module.handler (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:512:17)\\n    at async DevServer.renderToResponseWithComponentsImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/base-server.js:1463:9)\\n    at async DevServer.renderPageComponent (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/base-server.js:1515:24)\\n    at async DevServer.renderToResponseImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/base-server.js:1565:32)\\n    at async DevServer.pipeImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/base-server.js:1045:25)\\n    at async NextNodeServer.handleCatchallRenderRequest (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/next-server.js:338:17)\"},\"gip\":true,\"appGip\":true,\"scriptLoader\":[]}</script></body></html>"

  113 |       expect(res.status).toBe(500)
  114 |       // Verify the page was rendered at runtime by checking response
> 115 |       expect(await res.text()).toContain('custom 500 page')
      |                                ^
  116 |     } finally {
  117 |       await next.stop()
  118 |     }

  at Object.toContain (e2e/500-page/500-page-build.test.ts:115:32)

● 500 Page build validation › builds 500 statically by default with no pages/500

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

Expected: "500: Internal Server Error"
Received: ""

  177 |       const currentTitle = await browser.eval('document.title')
  178 |       expect(initialTitle).toBe(currentTitle)
> 179 |       expect(initialTitle).toBe('500: Internal Server Error')
      |                            ^
  180 |     } finally {
  181 |       await next.stop()
  182 |     }

  at Object.toBe (e2e/500-page/500-page-build.test.ts:179:28)

● 500 Page build validation › does not build 500 statically with no pages/500 and custom getInitialProps in _error

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

Expected substring: "Error status:"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script defer=\"\" noModule=\"\" src=\"/_next/static/chunks/polyfills.js\"></script><script src=\"/_next/static/chunks/webpack.js\" defer=\"\"></script><script src=\"/_next/static/chunks/main.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_app.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_error.js\" defer=\"\"></script><script src=\"/_next/static/development/_buildManifest.js\" defer=\"\"></script><script src=\"/_next/static/development/_ssgManifest.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script src=\"/_next/static/chunks/react-refresh.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"oops\",\"stack\":\"Error: oops\\n    at page.getInitialProps (webpack-internal:///(pages-dir-node)/./pages/err.js:7:11)\\n    at loadGetInitialProps (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/shared/lib/utils.js:141:29)\\n    at App.appGetInitialProps (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/pages/_app.js:19:60)\\n    at loadGetInitialProps (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:1:73943)\\n    at renderToHTMLImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:13:6791)\\n    at async doRender (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:135:36)\\n    at async PagesRouteModule.handleResponse (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:1:169973)\\n    at async handleResponse (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:341:32)\\n    at async Module.handler (webpack-internal:///(pages-dir-node)/./node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/route-modules/pages/pages-handler.js:512:17)\\n    at async DevServer.renderToResponseWithComponentsImpl (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/server/base-server.js:1463:9)\\n    at async DevServer.renderPageComponent (/tmp/next-install-c9ad559155a14bd97908e89596058c00ba048ebf8411a55c7dcdb0e71be94501/node_modules/.pnpm/next@file+..+..+home+runner+work+next.js+next.js+packages+next+packed.tgz_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/next/dist/s

... truncated ...

pnpm test-start test/e2e/cli/cli.test.ts (job)

  • CLI Usage > dev > -p reserved (DD)
Expand output

● CLI Usage › dev › -p reserved

listen EACCES: permission denied 0.0.0.0:1

  91 |       app.on('error', reject)
  92 |       app.on('listening', () => resolve())
> 93 |       app.listen(port)
     |           ^
  94 |     })
  95 |
  96 |     const { child, exit } = await launchDevServer(

  at listen (e2e/cli/cli.test.ts:93:11)
  at runAndCaptureOutput (e2e/cli/cli.test.ts:90:11)
  at Object.runAndCaptureOutput (e2e/cli/cli.test.ts:895:40)

pnpm test-start test/e2e/yarn-pnp/test/with-eslint.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly with-eslint (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly with-eslint

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@^18.3.5 @types/react-dom@^18.3.0 typescript@latest @types/node@^22.5.4 eslint@^9 eslint-config-next@latest

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextStartInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextStartInstance.setup (lib/next-modes/next-start.ts:45:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-start test/production/app-types/app-types.test.ts (job)

  • app type checking - production mode > should report link errors (DD)
  • app type checking - production mode > should generate route types correctly and report router API errors (DD)
  • app type checking - production mode > should generate route types correctly and report form errors (DD)
  • app type checking - production mode > should generate route types correctly and report redirect errors (DD)
  • app type checking - production mode > should type check invalid entry exports (DD)
Expand output

● app type checking - production mode › should report link errors

ENOENT: no such file or directory, open '/tmp/next-install-0479ea917faef78045d396bba5308a93a69ff0ce921e142ff70df3cdc7ac0a61/.next/types/link.d.ts'

● app type checking - production mode › should generate route types correctly and report router API errors

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

  50 |   it('should generate route types correctly and report router API errors', async () => {
  51 |     const errorLines = [
> 52 |       ...errors!.matchAll(
     |                  ^
  53 |         /\.\/src\/app\/type-checks\/router\/page\.tsx:(\d+):/g
  54 |       ),
  55 |     ].map(([, line]) => +line)

  at Object.matchAll (production/app-types/app-types.test.ts:52:18)

● app type checking - production mode › should generate route types correctly and report form errors

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

  64 |   it('should generate route types correctly and report form errors', async () => {
  65 |     const errorLines = [
> 66 |       ...errors!.matchAll(/\.\/src\/app\/type-checks\/form\/page\.tsx:(\d+):/g),
     |                  ^
  67 |     ].map(([, line]) => +line)
  68 |
  69 |     const ST = 8

  at Object.matchAll (production/app-types/app-types.test.ts:66:18)

● app type checking - production mode › should generate route types correctly and report redirect errors

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

  76 |   it('should generate route types correctly and report redirect errors', async () => {
  77 |     const errorLines = [
> 78 |       ...errors!.matchAll(
     |                  ^
  79 |         /\.\/src\/app\/type-checks\/redirect\/page\.tsx:(\d+):/g
  80 |       ),
  81 |     ].map(([, line]) => +line)

  at Object.matchAll (production/app-types/app-types.test.ts:78:18)

● app type checking - production mode › should type check invalid entry exports

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

Matcher error: received value must not be null nor undefined

Received has value: undefined

  90 |   if (!isTurbopack) {
  91 |     it('should type check invalid entry exports', () => {
> 92 |       expect(errors).toContain(`"foo" is not a valid Page export field.`)
     |                      ^
  93 |
  94 |       expect(errors).toMatch(
  95 |         /Invalid configuration "revalidate":\s+Expected "false | number \(>= 0\)", got "-1"/

  at Object.toContain (production/app-types/app-types.test.ts:92:22)

pnpm test-start test/e2e/middleware-src-node/middleware-src-node.test.ts (job)

  • middleware-src-node > Middleware in src/ and / folders > should warn about middleware on export (DD)
Expand output

● middleware-src-node › Middleware in src/ and / folders › should warn about middleware on export

next build failed with code/signal 1

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

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

pnpm test-start test/e2e/middleware-src/middleware-src.test.ts (job)

  • middleware-src > Middleware in src/ and / folders > should warn about middleware on export (DD)
Expand output

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

next build failed with code/signal 1

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

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

pnpm test-start test/e2e/yarn-pnp/test/with-sass.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly with-sass (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly with-sass

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@^19.0.1 @types/react-dom@19.2.1 typescript@^5.7.2 @types/node@^22.10.1 sass@^1.82.0

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextStartInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextStartInstance.setup (lib/next-modes/next-start.ts:45:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-start test/e2e/custom-routes/custom-routes.test.ts (job)

  • Custom routes > should output routes-manifest successfully (DD)
Expand output

● Custom routes › should output routes-manifest successfully

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Custom routes should output routes-manifest successfully 1`

- Snapshot  - 2
+ Received  + 9

@@ -350,10 +350,17 @@
        "source": "/has-header-4",
      },
    ],
    "onMatchHeaders": [],
    "pages404": true,
+   "ppr": {
+     "chain": {
+       "headers": {
+         "next-resume": "1",
+       },
+     },
+   },
    "redirects": [
      {
        "destination": "/:path+",
        "internal": true,
        "priority": true,
@@ -926,14 +933,14 @@
        },
      ],
      "fallback": [],
    },
    "rsc": {
-     "clientParamParsing": false,
+     "clientParamParsing": true,
      "contentTypeHeader": "text/x-component",
      "didPostponeHeader": "x-nextjs-postponed",
-     "dynamicRSCPrerender": false,
+     "dynamicRSCPrerender": true,
      "header": "rsc",
      "prefetchHeader": "next-router-prefetch",
      "prefetchSegmentDirSuffix": ".segments",
      "prefetchSegmentHeader": "next-router-segment-prefetch",
      "prefetchSegmentSuffix": ".segment.rsc",

  1400 |           [`${externalServerPort}`, 'EXTERNAL_SERVER_PORT'],
  1401 |         ])
> 1402 |       ).toMatchInlineSnapshot(`
       |         ^
  1403 |        {
  1404 |          "appType": "pages",
  1405 |          "basePath": "",

  at Object.toMatchInlineSnapshot (e2e/custom-routes/custom-routes.test.ts:1402:9)

pnpm test-start test/e2e/yarn-pnp/test/mdx-pages.test.ts (job)

  • yarn PnP > should compile and serve the index page correctly mdx-pages (DD)
Expand output

● yarn PnP › should compile and serve the index page correctly mdx-pages

Command failed: yarn set version berry && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add next@/home/runner/work/next.js/next.js/packages/next/packed.tgz react@19.2.5 react-dom@19.2.5 @types/react@19.2.2 @types/react-dom@19.2.1 typescript@latest @types/node@latest @mdx-js/loader@^1.5.1 @mdx-js/react@^1.6.18 @next/mdx@/home/runner/work/next.js/next.js/packages/next-mdx/packed.tgz

  218 |         console.log('running install command', installString)
  219 |         rootSpan.traceChild('run custom install').traceFn(() => {
> 220 |           childProcess.execSync(installString, {
      |                        ^
  221 |             cwd: installDir,
  222 |             stdio: ['ignore', 'inherit', 'inherit'],
  223 |           })

  at execSync (lib/create-next-install.js:220:24)
  at Span.fn [as traceFn] (../packages/next/src/trace/trace.ts:135:14)
  at traceFn (lib/create-next-install.js:219:51)
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNextInstall (lib/create-next-install.js:65:10)
  at lib/next-modes/base.ts:341:13
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at NextStartInstance.createTestDir (lib/next-modes/base.ts:233:5)
  at NextStartInstance.setup (lib/next-modes/next-start.ts:45:5)
  at lib/e2e-utils/index.ts:276:7
  at Span.traceAsyncFn (../packages/next/src/trace/trace.ts:146:14)
  at createNext (lib/e2e-utils/index.ts:241:12)
  at Object.<anonymous> (e2e/yarn-pnp/test/utils.ts:38:14)

pnpm test-start test/production/app-dynamic-error/app-dynamic-error.test.ts (job)

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

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

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

Expected substring: "Error occurred prerendering page \"/dynamic-error\""
Received string:    "▲ Next.js 16.3.0-canary.2 (webpack)
- Cache Components enabled
- Experiments (use with caution):
  ✓ appNewScrollHandler (enabled by `__NEXT_EXPERIMENTAL_APP_NEW_SCROLL_HANDLER`)
  ✓ cachedNavigations (enabled by `__NEXT_EXPERIMENTAL_CACHED_NAVIGATIONS`)·
  Creating an optimized production build ...
Failed to compile.·
./app/dynamic-error/page.js
Error:   x Route segment config \"dynamic\" is not compatible with `nextConfig.cacheComponents`. Please remove it.
   ,-[3:1]
 1 | import { headers } from 'next/headers'
 2 |·
 3 | export const dynamic = 'error'
   :              ^^^^^^^
 4 |·
 5 | export default async function Page() {
 6 |   await headers()
   `----·
Import trace for requested module:
./app/dynamic-error/page.js··
> Build failed because of webpack errors
▲ Next.js 16.3.0-canary.2 (webpack)
- Cache Components enabled
- Experiments (use with caution):
  ✓ appNewScrollHandler (enabled by `__NEXT_EXPERIMENTAL_APP_NEW_SCROLL_HANDLER`)
  ✓ cachedNavigations (enabled by `__NEXT_EXPERIMENTAL_CACHED_NAVIGATIONS`)·
  Creating an optimized production build ...
Failed to compile.·
./app/dynamic-error/page.js
Error:   x Route segment config \"dynamic\" is not compatible with `nextConfig.cacheComponents`. Please remove it.
   ,-[3:1]
 1 | import { headers } from 'next/headers'
 2 |·
 3 | export const dynamic = 'error'
   :              ^^^^^^^
 4 |·
 5 | export default async function Page() {
 6 |   await headers()
   `----·
Import trace for requested module:
./app/dynamic-error/page.js··
> Build failed because of webpack errors
"

  15 |     it('throws an error when prerendering a page with config dynamic error', async () => {
  16 |       const { exitCode } = await next.build()
> 17 |       expect(next.cliOutput).toContain(
     |                              ^
  18 |         'Error occurred prerendering page "/dynamic-error"'
  19 |       )
  20 |       expect(exitCode).toBe(1)

  at Object.toContain (production/app-dynamic-error/app-dynamic-error.test.ts:17:30)

pnpm test-start test/e2e/dynamic-routing-middleware/dynamic-routing-middleware.test.ts (job)

  • Dynamic Routing with Middleware > should output a routes-manifest correctly (DD)
Expand output

● Dynamic Routing with Middleware › should output a routes-manifest correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Dynamic Routing with Middleware should output a routes-manifest correctly 1`

- Snapshot  - 2
+ Received  + 9

@@ -197,10 +197,17 @@
      },
    ],
    "headers": [],
    "onMatchHeaders": [],
    "pages404": true,
+   "ppr": {
+     "chain": {
+       "headers": {
+         "next-resume": "1",
+       },
+     },
+   },
    "redirects": [
      {
        "destination": "/:path+",
        "internal": true,
        "priority": true,
@@ -217,14 +224,14 @@
      "afterFiles": [],
      "beforeFiles": [],
      "fallback": [],
    },
    "rsc": {
-     "clientParamParsing": false,
+     "clientParamParsing": true,
      "contentTypeHeader": "text/x-component",
      "didPostponeHeader": "x-nextjs-postponed",
-     "dynamicRSCPrerender": false,
+     "dynamicRSCPrerender": true,
      "header": "rsc",
      "prefetchHeader": "next-router-prefetch",
      "prefetchSegmentDirSuffix": ".segments",
      "prefetchSegmentHeader": "next-router-segment-prefetch",
      "prefetchSegmentSuffix": ".segment.rsc",

  1094 |
  1095 |       expect(normalizeManifest(manifest, [[buildId, 'BUILD_ID']]))
> 1096 |         .toMatchInlineSnapshot(`
       |          ^
  1097 |        {
  1098 |          "appType": "pages",
  1099 |          "basePath": "",

  at Object.toMatchInlineSnapshot (e2e/dynamic-routing/shared.ts:1096:10)

pnpm test-start test/e2e/dynamic-routing/dynamic-routing.test.ts (job)

  • Dynamic Routing > should output a routes-manifest correctly (DD)
Expand output

● Dynamic Routing › should output a routes-manifest correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Dynamic Routing should output a routes-manifest correctly 1`

- Snapshot  - 2
+ Received  + 9

@@ -197,10 +197,17 @@
      },
    ],
    "headers": [],
    "onMatchHeaders": [],
    "pages404": true,
+   "ppr": {
+     "chain": {
+       "headers": {
+         "next-resume": "1",
+       },
+     },
+   },
    "redirects": [
      {
        "destination": "/:path+",
        "internal": true,
        "priority": true,
@@ -217,14 +224,14 @@
      "afterFiles": [],
      "beforeFiles": [],
      "fallback": [],
    },
    "rsc": {
-     "clientParamParsing": false,
+     "clientParamParsing": true,
      "contentTypeHeader": "text/x-component",
      "didPostponeHeader": "x-nextjs-postponed",
-     "dynamicRSCPrerender": false,
+     "dynamicRSCPrerender": true,
      "header": "rsc",
      "prefetchHeader": "next-router-prefetch",
      "prefetchSegmentDirSuffix": ".segments",
      "prefetchSegmentHeader": "next-router-segment-prefetch",
      "prefetchSegmentSuffix": ".segment.rsc",

  1094 |
  1095 |       expect(normalizeManifest(manifest, [[buildId, 'BUILD_ID']]))
> 1096 |         .toMatchInlineSnapshot(`
       |          ^
  1097 |        {
  1098 |          "appType": "pages",
  1099 |          "basePath": "",

  at Object.toMatchInlineSnapshot (e2e/dynamic-routing/shared.ts:1096:10)

pnpm test-start test/e2e/next-image-new/app-dir/app-dir.test.ts (job)

  • Image Component App Dir Tests > should load the images (DD)
  • Image Component App Dir Tests > should preload priority images (DD)
  • Image Component App Dir Tests > should work with preload prop (DD)
  • Image Component App Dir Tests > should not pass through user-provided srcset (causing a flash) (DD)
  • Image Component App Dir Tests > should update the image on src change (DD)
  • Image Component App Dir Tests > should callback onLoadingComplete when image is fully loaded (DD)
  • Image Component App Dir Tests > should callback native onLoad with sythetic event (DD)
  • Image Component App Dir Tests > should callback native onError when error occurred while loading image (DD)
  • Image Component App Dir Tests > should callback native onError even when error before hydration (DD)
  • Image Component App Dir Tests > should work with image with blob src (DD)
  • Image Component App Dir Tests > should work when using flexbox (DD)
  • Image Component App Dir Tests > should work when using overrideSrc prop (DD)
  • Image Component App Dir Tests > should work with sizes and automatically use responsive srcset (DD)
  • Image Component App Dir Tests > should render no wrappers or sizers (DD)
  • Image Component App Dir Tests > should lazy load with placeholder=blur (DD)
  • Image Component App Dir Tests > should handle the styles prop appropriately (DD)
  • Image Component App Dir Tests > should warn when legacy prop layout=fill (DD)
  • Image Component App Dir Tests > should warn when legacy prop layout=responsive (DD)
  • Image Component App Dir Tests > should render picture via getImageProps (DD)
  • Image Component App Dir Tests > should not create an image folder in server/chunks (DD)
  • Image Component App Dir Tests > should render as unoptimized with missing src prop (DD)
  • Image Component App Dir Tests > should render as unoptimized with empty string src prop (DD)
  • Image Component App Dir Tests > should correctly ignore prose styles (DD)
  • Image Component App Dir Tests > should apply style inheritance for img elements but not wrapper elements (DD)
  • Image Component App Dir Tests > should apply filter style after image loads (DD)
  • Image Component App Dir Tests > should emit image for next/dynamic with non ssr case (DD)
  • Image Component App Dir Tests > should correctly rotate image (DD)
  • Image Component App Dir Tests > should have data url placeholder when enabled (DD)
  • Image Component App Dir Tests > should remove data url placeholder after image loads (DD)
  • Image Component App Dir Tests > should render correct objectFit when data url placeholder and fill (DD)
  • Image Component App Dir Tests > should have blurry placeholder when enabled ([DD](https://app.datadoghq.com/ci/test/runs?query=%40git.repository.id%3A%22github.com%

... truncated to fit in one GitHub comment ...

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

Labels

create-next-app Related to our CLI tool for quickly starting a new Next.js application. created-by: Turbopack team PRs by the Turbopack team. tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant