diff --git a/.gitignore b/.gitignore
index 590a8c143f..08456566e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ edge-runtime/vendor
# Local Netlify folder
.netlify
+
/test-results/
/playwright-report/
/blob-report/
@@ -12,10 +13,8 @@ edge-runtime/vendor
deno.lock
.eslintcache
-/report/index.html
.DS_Store
tests/**/package-lock.json
tests/**/pnpm-lock.yaml
tests/**/yarn.lock
tests/**/out/
-report/test-results.json
diff --git a/deno.json b/deno.json
index 561c910ed5..735d9c4a1d 100644
--- a/deno.json
+++ b/deno.json
@@ -1,11 +1,12 @@
{
"lint": {
"files": {
- "include": ["edge-runtime/middleware.ts"]
+ "include": [
+ "edge-runtime/middleware.ts"
+ ]
}
},
"imports": {
"@netlify/edge-functions": "https://edge.netlify.com/v1/index.ts"
- },
- "importMap": "./edge-runtime/vendor/import_map.json"
+ }
}
diff --git a/e2e-report/app/globals.scss b/e2e-report/app/globals.scss
index cfa1feea2b..f8ff798011 100644
--- a/e2e-report/app/globals.scss
+++ b/e2e-report/app/globals.scss
@@ -68,7 +68,6 @@ span {
p {
font-size: $base-font-size;
- font-weight: bold;
}
img {
@@ -92,10 +91,6 @@ th {
font-weight: 400;
}
-tr {
- font-weight: bold;
-}
-
a:visited,
a:link {
color: white;
@@ -241,14 +236,14 @@ button.nav {
overflow-x: hidden;
}
-.skipped.card:hover {
+.skipped.card:hover,
+.open-issue.card:hover {
background-color: initial;
color: initial;
}
.testCases {
display: none;
- // background: $netlify-blue;
padding: 0.5% 2%;
box-shadow: inset -1px 4px 10px #00000047;
border-radius: 11px;
@@ -313,7 +308,8 @@ button.nav {
}
}
- .card.skipped {
+ .card.skipped,
+ .card.open-issues {
display: none;
width: clamp(350px, 55%, 1000px);
cursor: default;
@@ -321,7 +317,8 @@ button.nav {
overflow: scroll;
}
- .card.skipped.open {
+ .card.skipped.open,
+ .card.open-issues.open {
display: block;
}
}
@@ -365,7 +362,7 @@ button.nav {
}
}
-.card:hover:not(.skipped) {
+.card.test-group:hover {
background-color: $netlify-blue;
background-image: $card-bg-img;
background-blend-mode: screen;
@@ -400,7 +397,8 @@ span[data-status='skipped'] {
width: 35vw;
}
-.skipped {
+.skipped,
+.open-issues {
td,
th {
padding: 0.5% 2%;
@@ -412,19 +410,26 @@ span[data-status='skipped'] {
font-size: clamp(1rem, 0.8764rem + 0.4121vw, 1.16rem);
}
}
+}
+.open-issues {
a {
color: black;
font-weight: bold;
- display: flex;
- flex-flow: column;
+ display: inline;
}
- :hover a {
- color: white;
+ a:hover {
+ color: $netlify-blue;
+ }
+ .github-link-icon {
+ width: 0.75em;
+ height: auto;
+ margin: 0 0.5em;
}
}
-.skipped .card {
+.skipped .card,
+.open-issues .card {
display: flex;
justify-content: space-between;
padding: 4%;
@@ -433,7 +438,8 @@ span[data-status='skipped'] {
}
}
-.skipped .card:hover {
+.skipped .card:hover,
+.open-issues .card:hover {
p {
color: #2bdcd2;
}
diff --git a/e2e-report/app/page.js b/e2e-report/app/page.js
index 11a688acf3..564c7609e6 100644
--- a/e2e-report/app/page.js
+++ b/e2e-report/app/page.js
@@ -1,23 +1,17 @@
-import { SkippedTests } from '../components/filter-data.js'
+import { OpenIssues, SkippedTests } from '../components/filter-data.js'
import GroupedTests from '../components/grouped-tests.js'
import Hero from '../components/hero.js'
import testData from '../data/test-results.json'
export default function Home() {
const { results, passed, failed, total, passRate, skipped, testDate, nextVersion } = testData
- const skippedTests = []
- results.forEach((suite) => {
- if (suite.skipped === true) {
- skippedTests.push(suite)
- }
-
- const { testCases } = suite
- testCases?.forEach((testCase) => {
- if (testCase.status === 'failed') {
- skippedTests.push(testCase)
- }
- })
- })
+ const skippedSuites = results.filter(({ skipped }) => skipped === true)
+ const skippedTestCases = results.flatMap(
+ ({ testCases }) => testCases?.filter(({ status }) => status === 'skipped') ?? [],
+ )
+ const failedTestCases = results.flatMap(
+ ({ testCases }) => testCases?.filter(({ status }) => status === 'failed') ?? [],
+ )
return (
<>
@@ -34,7 +28,8 @@ export default function Home() {
-
+
+
>
)
diff --git a/e2e-report/components/filter-data.js b/e2e-report/components/filter-data.js
index 5da1766320..e4011c8f6f 100644
--- a/e2e-report/components/filter-data.js
+++ b/e2e-report/components/filter-data.js
@@ -4,6 +4,7 @@ import { useState } from 'react'
import Down from '../public/down.svg'
import Up from '../public/up.svg'
+import ExternalLinkIcon from '../public/arrow-up-right-from-square-solid.svg'
export const groupDefinitions = [
{
@@ -58,7 +59,60 @@ export const groupTests = (testSuites) => {
)
}
-export const SkippedTests = ({ testSuites }) => {
+export const OpenIssues = ({ testCases }) => {
+ const [slider, setSlider] = useState({})
+
+ function handleSelect(el) {
+ setSlider({
+ ...slider,
+ [el]: !slider[el],
+ })
+ }
+
+ return (
+
+
handleSelect('openIssues')}>
+
Open Issues
+
Total: {testCases.length}
+ {slider.openIssues ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ Test |
+ Reason |
+
+ {testCases.map((testCase, index) => {
+ const { name, link, reason = 'Reason not yet assigned' } = testCase
+ return (
+
+ {name} |
+
+
+ {link ? (
+
+
+ {reason}
+
+ ) : (
+ reason
+ )}
+
+ |
+
+ )
+ })}
+
+
+
+ )
+}
+
+export const SkippedTests = ({ testCases, testSuites }) => {
const [slider, setSlider] = useState({})
function handleSelect(el) {
@@ -71,8 +125,10 @@ export const SkippedTests = ({ testSuites }) => {
return (
handleSelect('skipped')}>
-
Open Issues + Skipped Tests
-
Total: {testSuites.length}
+
Skipped Tests
+
+ Total: {testSuites.length} suites + {testCases.length} tests
+
{slider.skipped ? (
) : (
@@ -85,21 +141,24 @@ export const SkippedTests = ({ testSuites }) => {
Test |
Reason |
- {testSuites?.map((testCase, index) => {
- const { name, link, reason, file } = testCase
+ {testSuites.map((testCase, index) => {
+ const { file, reason } = testCase
return (
-
- {file || name} |
+
+ {file} |
+
+ {reason}
+ |
+
+ )
+ })}
+ {testCases.map((testCase, index) => {
+ const { name, reason } = testCase
+ return (
+
+ {name} |
{reason}
- {link && (
-
- )}
|
)
diff --git a/e2e-report/components/grouped-tests.js b/e2e-report/components/grouped-tests.js
index a346823fec..94e36f950a 100644
--- a/e2e-report/components/grouped-tests.js
+++ b/e2e-report/components/grouped-tests.js
@@ -35,7 +35,7 @@ export default function GroupedTests({ testData }) {
const groupTotal = (testGroup.passed ?? 0) + (testGroup.failed ?? 0)
return (
-
handleSelect(testGroup.id)}>
+
handleSelect(testGroup.id)}>
diff --git a/e2e-report/data/issues.json b/e2e-report/data/issues.json
new file mode 100644
index 0000000000..8f1d096ad0
--- /dev/null
+++ b/e2e-report/data/issues.json
@@ -0,0 +1,46 @@
+[
+ {
+ "body": "I'm not quite sure exactly what the scope of this is, but the failing tests here have a fixture site that enables `skipMiddlewareUrlNormalize` and a user middleware that redirects any other casing of `/en/*` to `/en/*` (and so on), but when `/EN` is fetched it redirects to `/en/en` instead of `/en`:\r\n\r\n```\r\n ● skip-trailing-slash-redirect › should be able to redirect locale casing $1\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: \"/en\"\r\n Received: \"/en/en\"\r\n\r\n 155 | const res = await next.fetch(`/${locale}`, { redirect: 'manual' })\r\n 156 | expect(res.status).toBe(307)\r\n > 157 | expect(new URL(res.headers.get('location'), 'http://n').pathname).toBe(\r\n | ^\r\n 158 | `/${locale.toLowerCase()}`\r\n 159 | )\r\n 160 | }\r\n\r\n at toBe (e2e/skip-trailing-slash-redirect/index.test.ts:157:73)\r\n\r\n ● skip-trailing-slash-redirect › should be able to redirect locale casing $1\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: \"/ja-jp\"\r\n Received: \"/ja-jp/ja-jp\"\r\n\r\n 155 | const res = await next.fetch(`/${locale}`, { redirect: 'manual' })\r\n 156 | expect(res.status).toBe(307)\r\n > 157 | expect(new URL(res.headers.get('location'), 'http://n').pathname).toBe(\r\n | ^\r\n 158 | `/${locale.toLowerCase()}`\r\n 159 | )\r\n 160 | }\r\n\r\n at toBe (e2e/skip-trailing-slash-redirect/index.test.ts:157:73)\r\n```\r\n\r\nIt looks like we [previously claimed to have fixed this in FRA-332](https://github.com/netlify/next-runtime-minimal/pull/287), but it must have regressed at some point.\r\n\r\ntest: test/e2e/skip-trailing-slash-redirect/index.test.ts\r\nreason: does not correctly handle user middleware that redirects to path with canonical locale casing when app enables `skipMiddlewareUrlNormalize` and path contains locale slug with non-canonical casing",
+ "number": 564
+ },
+ {
+ "body": "A pages router site with both basepath and i18n enabled does not match middleware targeted at the root unless a locale is in the URL. It should match when using the default locale\r\n\r\nDemo: \r\n- https://6634b69452829cd391cab206--next-e2e-tests.netlify.app/root/ does not have `x-from-middleware` header\r\n- https://6634b69452829cd391cab206--next-e2e-tests.netlify.app/root/en/ does have `x-from-middleware` header\r\n\r\ntest: test/e2e/middleware-matcher/index.test.ts\r\nreason: Middleware does not match when using basePath and default locale",
+ "number": 454
+ },
+ {
+ "body": "There are a few scenarios where our the custom matchers from middleware are not correctly being transformed when using i18n and default locales, as they're either matching too broadly or too narrowly. See the two linked GH issues for details:\r\n\r\n[https://github.com/netlify/next-runtime-minimal/issues/453](https://github.com/netlify/next-runtime-minimal/issues/453)
[https://github.com/netlify/next-runtime-minimal/issues/454](https://github.com/netlify/next-runtime-minimal/issues/454)\r\n\r\ntest: Middleware custom matchers i18n should not match\r\nreason: Middleware matching is too broad when using i18n",
+ "number": 453
+ },
+ {
+ "body": "On sites that use pages router and have middleware, loading a page using next/link will attempt to load a JSON file, which will return a 404. If there is no middleware then it works fine. This applies even if the middleware does nothing.\r\n\r\ntest: test/e2e/middleware-base-path/test/index.test.ts\r\nreason: Pages router data requests returning 404 when middleware is used\r\ntest case: \"Middleware base tests router.query must exist when Link clicked page routing\"",
+ "number": 450
+ },
+ {
+ "body": "When appending a `set-cookie` header, the server returns two copies of the header. e.g. \r\n\r\n```ts\r\nexport async function middleware(request, ev) {\r\n const next = NextResponse.next()\r\n next.headers.append('set-cookie', 'bar=chocochip')\r\n return next\r\n}\r\n```\r\n\r\nLeads to: \r\n\r\n\r\n\r\ntest: test/e2e/middleware-responses/test/index.test.ts\r\nreason: Appending set-cookie header in middleware leads to duplicate header\r\n",
+ "number": 447
+ },
+ {
+ "body": "The test [\"app-dir action handling fetch actions should store revalidation data in the prefetch cache\"](https://github.com/vercel/next.js/blob/6475431a4cbbf2b71c38158e0e722183779faf4f/test/e2e/app-dir/actions/app-action.test.ts#L980) fails when running tests, but seems to work fine when testing manually. It may be a first-run issue, which needs investigation.\r\n\r\ntest: test/e2e/app-dir/actions/app-action.test.ts\r\nreason: Fetch action prefetch cache test is flakey",
+ "number": 444
+ },
+ {
+ "body": "If a Next.js page returns a 500 error and the browser sent accept-encoding gzip, it seems the returned data _is_ encoded, but no encoding header is set, so the browser cannot decode it.\r\n\r\n`curl --request GET --url https://66056f2be8186e00aaea53d3--next-e2e-tests.netlify.app/enoent --header 'Accept-Encoding: gzip'`\r\n\r\ntest case: https://github.com/vercel/next.js/blob/canary/test/e2e/getserversideprops/test/index.test.ts#L367\r\ntest: test/e2e/getserversideprops/test/index.test.ts\r\nreason: Server error pages return encoded data without content-encoding header if accept-encoding is gzip",
+ "number": 387
+ },
+ {
+ "body": "When redirecting a data request, middleware returns a response with `x-nextjs-redirect`, rather than a `location` header. We handle this correctly. However Next.js expects us to directly return and empty response with a 302 response code (without the location header), whereas we're currently passing the request on to the origin and returning the body with 404 code. I'm unsure if it's legal to return a 302 with no location, but it's what next start does, and the router expects.\r\n\r\ntest case: https://github.com/vercel/next.js/blob/canary/test/e2e/middleware-redirects/test/index.test.ts#L100\r\ntest: test/e2e/middleware-redirects/test/index.test.ts\r\nreason: Pages router middleware should return 302 status for redirected data requests",
+ "number": 386
+ },
+ {
+ "body": "In sites with trailing slashes enabled, requests should not add a trailing slash when they're for non-data static files.\r\n\r\ntest case: https://github.com/vercel/next.js/blob/canary/test/e2e/middleware-trailing-slash/test/index.test.ts#L436-L437\r\ntest: test/e2e/middleware-trailing-slash/test/index.test.ts\r\nreason: Middleware should not add trailing slashes to non-data requests in static dir",
+ "number": 385
+ },
+ {
+ "body": "Rewrites in middleware on i18n sites add the locale to the target automatically. However it is supposed to skip this if the target is a static file. This does not currently work, as the middleware doesn't know if a static file exists. This is documented as a known issue.\r\n\r\ntest: test/e2e/i18n-ignore-rewrite-source-locale/rewrites-with-basepath.test.ts, test/e2e/i18n-ignore-rewrite-source-locale/rewrites.test.ts\r\nreason: Middleware on sites with i18n cannot rewrite to static files",
+ "number": 383
+ },
+ {
+ "body": "It doesn't seem to be documented, but the e2e test and fixture here expects a CSP to be automatically applied to scripts in the head. The docs show manually setting it, but [the fixture](https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/app/middleware.js#L30) seems to only set it in the response. Nevertheless, running `next start` does seem to set it automatically, but when deployed it doesn't. I think this is low priority because it seems to be undocumented behaviour.\r\n\r\ntest case: https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/app/index.test.ts#L1711\r\ntest: test/e2e/app-dir/app/index.test.ts\r\nreason: Nonce not automatically set in script tags when using CSP",
+ "number": 381
+ }
+]
diff --git a/e2e-report/data/test-results.json b/e2e-report/data/test-results.json
index d5e61f24f2..4e771591f5 100644
--- a/e2e-report/data/test-results.json
+++ b/e2e-report/data/test-results.json
@@ -1,10 +1,11 @@
{
- "failed": 48,
- "skipped": 74,
- "passed": 1780,
- "total": 1902,
- "passRate": "97.37%",
- "testDate": "04/23/2024",
+ "failed": 22,
+ "skipped": 47,
+ "passed": 1519,
+ "total": 1588,
+ "passRate": "98.57%",
+ "testDate": "2024-06-03",
+ "nextVersion": "v14.2.3",
"results": [
{
"name": "app-dir edge runtime config",
@@ -12,6 +13,7 @@
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
"name": "app-dir edge runtime config should skip next deploy",
@@ -20,10063 +22,9151 @@
]
},
{
- "name": "app-dir action handling - next export",
- "file": "test/e2e/app-dir/actions/app-action-export.test.ts",
+ "name": "app dir - basepath",
+ "file": "test/e2e/app-dir/app-basepath/index.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app-dir action handling - next export should skip next deploy",
+ "name": "app dir - basepath should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "app-dir action size limit invalid config",
- "file": "test/e2e/app-dir/actions/app-action-size-limit-invalid.test.ts",
+ "name": "app-dir - custom-cache-handler - cjs",
+ "file": "test/e2e/app-dir/app-custom-cache-handler/index.test.ts",
+ "passed": 3,
+ "failed": 0,
+ "skipped": 0,
+ "total": "3",
+ "testCases": [
+ {
+ "name": "app-dir - custom-cache-handler - cjs should skip next deploy",
+ "status": "passed"
+ },
+ {
+ "name": "app-dir - custom-cache-handler - cjs-default-export should skip next deploy",
+ "status": "passed"
+ },
+ {
+ "name": "app-dir - custom-cache-handler - esm should skip next deploy",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "app-prefetch-false",
+ "file": "test/e2e/app-dir/app-prefetch-false/app-prefetch-false.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app-dir action size limit invalid config should skip next deploy",
+ "name": "app-prefetch-false should avoid double-fetching when optimistic navigation fails",
"status": "passed"
}
]
},
{
- "name": "app-dir action handling",
- "file": "test/e2e/app-dir/actions/app-action.test.ts",
- "passed": 57,
- "failed": 1,
+ "name": "app-custom-routes",
+ "file": "test/e2e/app-dir/app-routes/app-custom-routes.test.ts",
+ "passed": 62,
+ "failed": 0,
"skipped": 2,
+ "total": "65",
"testCases": [
{
- "name": "app-dir action handling should handle basic actions correctly",
+ "name": "app-custom-routes works with api prefix correctly statically generates correctly with no dynamic usage",
"status": "passed"
},
{
- "name": "app-dir action handling should report errors with bad inputs correctly",
+ "name": "app-custom-routes works with api prefix correctly does not statically generate with dynamic usage",
"status": "passed"
},
{
- "name": "app-dir action handling should support headers and cookies",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/first/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should push new route when redirecting",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/second/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should support headers in client imported actions",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/three/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should not log errors for non-action form POSTs",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/first/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should support setting cookies in route handlers with the correct overrides",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/second/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should support formData and redirect",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/three/data.json",
"status": "passed"
},
{
- "name": "app-dir action handling should support .bind",
+ "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support chained .bind",
+ "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support notFound (javascript disabled)",
+ "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support notFound",
+ "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support uploading files",
+ "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support hoc auth wrappers",
+ "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support importing actions in client components",
+ "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support importing the same action module instance in both server and action layers",
+ "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should not block navigation events while a server action is in flight",
+ "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should not block router.back() while a server action is in flight",
+ "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should trigger a refresh for a server action that gets discarded due to a navigation",
+ "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should trigger a refresh for a server action that also dispatches a navigation event",
+ "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support next/dynamic with ssr: false",
+ "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should support next/dynamic with ssr: false (edge)",
+ "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should only submit action once when resubmitting an action after navigation",
+ "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should handle actions executed in quick succession",
+ "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should 404 when POSTing an invalid server action",
+ "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should be possible to catch network errors",
+ "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should be possible to catch regular errors",
+ "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should forward action request to a worker that contains the action handler (node)",
+ "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "app-dir action handling should forward action request to a worker that contains the action handler (edge)",
+ "name": "app-custom-routes basic fetch request with a response route groups routes to the correct handler",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should handle basic actions correctly",
+ "name": "app-custom-routes basic fetch request with a response request can read query parameters",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should return error response for hoc auth wrappers in edge runtime",
+ "name": "app-custom-routes basic fetch request with a response request can read query parameters (edge)",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should handle redirect to a relative URL in a single pass",
+ "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.redirect() helper",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should handle regular redirects",
+ "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.json() helper",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should allow cookie and header async storages",
+ "name": "app-custom-routes body can handle handle a streaming request and streaming response (edge)",
"status": "passed"
},
{
- "name": "app-dir action handling Edge SSR should handle unicode search params",
+ "name": "app-custom-routes body can read a JSON encoded body",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle a fetch action initiated from a static page",
+ "name": "app-custom-routes body can read a JSON encoded body (edge)",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle redirect to a relative URL in a single pass",
+ "name": "app-custom-routes body can read a JSON encoded body for DELETE requests",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle regular redirects",
+ "name": "app-custom-routes body can read a JSON encoded body for OPTIONS requests",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle redirects to routes that provide an invalid RSC response",
+ "name": "app-custom-routes body can read a streamed JSON encoded body (edge)",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle revalidatePath",
+ "name": "app-custom-routes body can read the text body",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should handle revalidateTag",
+ "name": "app-custom-routes body can read the text body (edge)",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should store revalidation data in the prefetch cache",
- "status": "failed"
+ "name": "app-custom-routes context provides params to routes with dynamic parameters",
+ "status": "passed"
},
{
- "name": "app-dir action handling fetch actions should revalidate when cookies.set is called",
+ "name": "app-custom-routes context provides params to routes with catch-all routes",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should invalidate client cache on other routes when cookies.set is called",
+ "name": "app-custom-routes context does not provide params to routes without dynamic parameters",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should revalidate when cookies.set is called in a client action",
+ "name": "app-custom-routes hooks headers gets the correct values",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should invalidate client cache when tag is revalidated",
+ "name": "app-custom-routes hooks cookies gets the correct values",
"status": "passed"
},
{
- "name": "app-dir action handling fetch actions should invalidate client cache when path is revalidated",
+ "name": "app-custom-routes hooks req.cookies gets the correct values",
"status": "passed"
},
{
- "name": "app-dir action handling encryption should send encrypted values from the closed over closure",
+ "name": "app-custom-routes hooks cookies().has() gets the correct values",
"status": "passed"
},
{
- "name": "app-dir action handling redirects redirects properly when server action handler uses `redirect`",
+ "name": "app-custom-routes hooks redirect can respond correctly",
"status": "passed"
},
{
- "name": "app-dir action handling redirects redirects properly when server action handler uses `permanentRedirect`",
+ "name": "app-custom-routes hooks permanentRedirect can respond correctly",
"status": "passed"
},
{
- "name": "app-dir action handling redirects displays searchParams correctly when redirecting with SearchParams",
+ "name": "app-custom-routes hooks notFound can respond correctly in nodejs",
"status": "passed"
},
{
- "name": "app-dir action handling redirects merges cookies correctly when redirecting",
+ "name": "app-custom-routes hooks notFound can respond correctly in edge",
"status": "passed"
},
{
- "name": "app-dir action handling redirects redirects properly when server action handler redirects with a 307 status code",
+ "name": "app-custom-routes error conditions responds with 405 (Method Not Allowed) when method is not implemented",
"status": "passed"
},
{
- "name": "app-dir action handling redirects redirects properly when server action handler redirects with a 308 status code",
+ "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler throws an error",
"status": "passed"
},
{
- "name": "app-dir action handling server actions render client components server component imported action should support importing client components from actions",
+ "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler calls NextResponse.next()",
"status": "passed"
},
{
- "name": "app-dir action handling caching disabled by default should use no-store as default for server action",
+ "name": "app-custom-routes automatic implementations implements HEAD on routes with GET already implemented",
"status": "passed"
},
{
- "name": "app-dir action handling caching disabled by default should not override force-cache in server action",
+ "name": "app-custom-routes automatic implementations implements OPTIONS on routes",
"status": "passed"
},
{
- "name": "app-dir action handling caching disabled by default should not override revalidate in server action",
+ "name": "app-custom-routes edge functions returns response using edge runtime",
"status": "passed"
},
{
- "name": "app-dir action handling should log a warning when a server action is not found but an id is provided",
+ "name": "app-custom-routes edge functions returns a response when headers are accessed",
+ "status": "passed"
+ },
+ {
+ "name": "app-custom-routes dynamic = \"force-static\" strips search, headers, and domain from request",
+ "status": "passed"
+ },
+ {
+ "name": "app-custom-routes customized metadata routes should work if conflict with metadata routes convention",
+ "status": "passed"
+ },
+ {
+ "name": "app-custom-routes no bundle error should not print bundling warning about React",
+ "status": "passed"
+ },
+ {
+ "name": "app-custom-routes no response returned should print an error when no response is returned",
"status": "skipped",
"reason": "Uses CLI output"
},
{
- "name": "app-dir action handling should work with interception routes",
+ "name": "app-custom-routes error conditions responds with 400 (Bad Request) when the requested method is not a valid HTTP method",
"status": "skipped",
"reason": "Uses CLI output"
}
]
},
{
- "name": "referencing a client component in an app route",
- "file": "test/e2e/app-dir/app-routes-client-component/app-routes-client-component.test.ts",
- "passed": 1,
+ "name": "app dir - not found navigation",
+ "file": "test/e2e/app-dir/error-boundary-navigation/override-node-env.test.ts",
+ "passed": 14,
"failed": 0,
"skipped": 0,
+ "total": "14",
"testCases": [
{
- "name": "referencing a client component in an app route responds without error",
- "status": "passed"
- }
- ]
- },
- {
- "name": "app-custom-routes",
- "file": "test/e2e/app-dir/app-routes/app-custom-routes.test.ts",
- "passed": 62,
- "failed": 0,
- "skipped": 2,
- "testCases": [
- {
- "name": "app-custom-routes works with api prefix correctly statically generates correctly with no dynamic usage",
- "status": "passed"
- },
- {
- "name": "app-custom-routes works with api prefix correctly does not statically generate with dynamic usage",
+ "name": "app dir - not found navigation should allow navigation on not-found",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/first/data.json",
+ "name": "app dir - not found navigation should allow navigation on error",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/second/data.json",
+ "name": "app dir - not found navigation should allow navigation to other routes on route that was initially not-found",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/three/data.json",
+ "name": "app dir - not found navigation should allow navigation back to route that was initially not-found",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/first/data.json",
+ "name": "app dir - not found navigation should allow navigating to a page calling notfound",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/second/data.json",
+ "name": "app dir - not found navigation should allow navigating to a non-existent page",
"status": "passed"
},
{
- "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/three/data.json",
+ "name": "app dir - not found navigation should be able to navigate to other page from root not-found page",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigation on not-found",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/vercel/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigation on error",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigation to other routes on route that was initially not-found",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/vercel/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigation back to route that was initially not-found",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigating to a page calling notfound",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/vercel/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should allow navigating to a non-existent page",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/endpoint",
+ "name": "app dir - not found navigation - with overridden node env should be able to navigate to other page from root not-found page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - metadata dynamic routes suspense",
+ "file": "test/e2e/app-dir/metadata-suspense/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/vercel/endpoint",
+ "name": "app dir - metadata dynamic routes suspense should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - metadata missing metadataBase",
+ "file": "test/e2e/app-dir/metadata-warnings/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/endpoint",
+ "name": "app dir - metadata missing metadataBase should skip next deploy",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "app dir - navigation",
+ "file": "test/e2e/app-dir/navigation/navigation.test.ts",
+ "passed": 48,
+ "failed": 0,
+ "skipped": 0,
+ "total": "48",
+ "testCases": [
+ {
+ "name": "app dir - navigation query string should set query correctly",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/vercel/endpoint",
+ "name": "app dir - navigation query string should handle unicode search params",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/endpoint",
+ "name": "app dir - navigation query string should not reset shallow url updates on prefetch",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/vercel/endpoint",
+ "name": "app dir - navigation query string useParams identity between renders should be stable in app",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/endpoint",
+ "name": "app dir - navigation query string useParams identity between renders should be stable in pages",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/vercel/endpoint",
+ "name": "app dir - navigation hash should scroll to the specified hash",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/endpoint",
+ "name": "app dir - navigation hash should not scroll to hash when scroll={false} is set",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/vercel/endpoint",
+ "name": "app dir - navigation hash-with-scroll-offset should scroll to the specified hash",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/endpoint",
+ "name": "app dir - navigation hash-link-back-to-same-page should scroll to the specified hash",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/vercel/endpoint",
+ "name": "app dir - navigation relative hashes and queries should work with a hash-only href",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/endpoint",
+ "name": "app dir - navigation relative hashes and queries should work with a hash-only `router.push(...)`",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/vercel/endpoint",
+ "name": "app dir - navigation relative hashes and queries should work with a query-only href",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response route groups routes to the correct handler",
+ "name": "app dir - navigation relative hashes and queries should work with both relative hashes and queries",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response request can read query parameters",
+ "name": "app dir - navigation not-found should trigger not-found in a server component",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response request can read query parameters (edge)",
+ "name": "app dir - navigation not-found should trigger not-found in a client component",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.redirect() helper",
+ "name": "app dir - navigation not-found should trigger not-found client-side",
"status": "passed"
},
{
- "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.json() helper",
+ "name": "app dir - navigation not-found should trigger not-found while streaming",
"status": "passed"
},
{
- "name": "app-custom-routes body can handle handle a streaming request and streaming response (edge)",
+ "name": "app dir - navigation redirect components should redirect in a server component",
"status": "passed"
},
{
- "name": "app-custom-routes body can read a JSON encoded body",
+ "name": "app dir - navigation redirect components should redirect in a client component",
"status": "passed"
},
{
- "name": "app-custom-routes body can read a JSON encoded body (edge)",
+ "name": "app dir - navigation redirect components should redirect client-side",
"status": "passed"
},
{
- "name": "app-custom-routes body can read a JSON encoded body for DELETE requests",
+ "name": "app dir - navigation redirect components should redirect to external url",
"status": "passed"
},
{
- "name": "app-custom-routes body can read a JSON encoded body for OPTIONS requests",
+ "name": "app dir - navigation redirect components should redirect to external url, initiating only once",
"status": "passed"
},
{
- "name": "app-custom-routes body can read a streamed JSON encoded body (edge)",
+ "name": "app dir - navigation redirect components should only trigger the redirect once (/redirect/servercomponent)",
"status": "passed"
},
{
- "name": "app-custom-routes body can read the text body",
+ "name": "app dir - navigation redirect components should only trigger the redirect once (redirect/redirect-with-loading)",
"status": "passed"
},
{
- "name": "app-custom-routes body can read the text body (edge)",
+ "name": "app dir - navigation redirect next.config.js redirects should redirect from next.config.js",
"status": "passed"
},
{
- "name": "app-custom-routes context provides params to routes with dynamic parameters",
+ "name": "app dir - navigation redirect next.config.js redirects should redirect from next.config.js with link navigation",
"status": "passed"
},
{
- "name": "app-custom-routes context provides params to routes with catch-all routes",
+ "name": "app dir - navigation redirect middleware redirects should redirect from middleware",
"status": "passed"
},
{
- "name": "app-custom-routes context does not provide params to routes without dynamic parameters",
+ "name": "app dir - navigation redirect middleware redirects should redirect from middleware with link navigation",
"status": "passed"
},
{
- "name": "app-custom-routes hooks headers gets the correct values",
+ "name": "app dir - navigation redirect status code should respond with 307 status code in server component",
"status": "passed"
},
{
- "name": "app-custom-routes hooks cookies gets the correct values",
+ "name": "app dir - navigation redirect status code should respond with 307 status code in client component",
"status": "passed"
},
{
- "name": "app-custom-routes hooks req.cookies gets the correct values",
+ "name": "app dir - navigation redirect status code should respond with 308 status code if permanent flag is set",
"status": "passed"
},
{
- "name": "app-custom-routes hooks cookies().has() gets the correct values",
+ "name": "app dir - navigation external push should push external url without affecting hooks",
"status": "passed"
},
{
- "name": "app-custom-routes hooks redirect can respond correctly",
+ "name": "app dir - navigation navigation between pages and app should not contain _rsc query while navigating from app to pages",
"status": "passed"
},
{
- "name": "app-custom-routes hooks permanentRedirect can respond correctly",
+ "name": "app dir - navigation navigation between pages and app should not contain _rsc query while navigating from pages to app",
"status": "passed"
},
{
- "name": "app-custom-routes hooks notFound can respond correctly in nodejs",
+ "name": "app dir - navigation navigation between pages and app should not omit the hash while navigating from app to pages",
"status": "passed"
},
{
- "name": "app-custom-routes hooks notFound can respond correctly in edge",
+ "name": "app dir - navigation navigation between pages and app should not continously initiate a mpa navigation to the same URL when router state changes",
"status": "passed"
},
{
- "name": "app-custom-routes error conditions responds with 405 (Method Not Allowed) when method is not implemented",
+ "name": "app dir - navigation nested navigation should navigate to nested pages",
"status": "passed"
},
{
- "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler throws an error",
+ "name": "app dir - navigation nested navigation should load chunks correctly without double encoding of url",
"status": "passed"
},
{
- "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler calls NextResponse.next()",
+ "name": "app dir - navigation SEO should emit noindex meta tag for not found page when streaming",
"status": "passed"
},
{
- "name": "app-custom-routes automatic implementations implements HEAD on routes with GET already implemented",
+ "name": "app dir - navigation SEO should emit refresh meta tag for redirect page when streaming",
"status": "passed"
},
{
- "name": "app-custom-routes automatic implementations implements OPTIONS on routes",
+ "name": "app dir - navigation SEO should emit refresh meta tag (permanent) for redirect page when streaming",
"status": "passed"
},
{
- "name": "app-custom-routes edge functions returns response using edge runtime",
+ "name": "app dir - navigation SEO should contain default meta tags in error page",
"status": "passed"
},
{
- "name": "app-custom-routes edge functions returns a response when headers are accessed",
+ "name": "app dir - navigation SEO should not log 404 errors in ipc server",
"status": "passed"
},
{
- "name": "app-custom-routes dynamic = \"force-static\" strips search, headers, and domain from request",
+ "name": "app dir - navigation navigations when attaching a Proxy to `window.Promise` should navigate without issue",
"status": "passed"
},
{
- "name": "app-custom-routes customized metadata routes should work if conflict with metadata routes convention",
+ "name": "app dir - navigation scroll restoration should restore original scroll position when navigating back",
"status": "passed"
},
{
- "name": "app-custom-routes no bundle error should not print bundling warning about React",
+ "name": "app dir - navigation navigating to a page with async metadata should render the final state of the page with correct metadata",
"status": "passed"
},
{
- "name": "app-custom-routes no response returned should print an error when no response is returned",
- "status": "skipped",
- "reason": "Uses CLI output"
+ "name": "app dir - navigation navigating to dynamic params & changing the casing should load the page correctly",
+ "status": "passed"
},
{
- "name": "app-custom-routes error conditions responds with 400 (Bad Request) when the requested method is not a valid HTTP method",
- "status": "skipped",
- "reason": "Uses CLI output"
+ "name": "app dir - navigation browser back to a revalidated page should load the page",
+ "status": "passed"
}
]
},
{
- "name": "async-component-preload",
- "file": "test/e2e/app-dir/async-component-preload/async-component-preload.test.ts",
+ "name": "SCSS Support loader handling External imports",
+ "file": "test/e2e/app-dir/scss/external-url/external-url.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "async-component-preload should skip next deploy",
+ "name": "SCSS Support loader handling External imports should include font on the page",
"status": "passed"
}
]
},
{
- "name": "router autoscrolling on navigation with css modules",
- "file": "test/e2e/app-dir/autoscroll-with-css-modules/index.test.ts",
- "passed": 2,
+ "name": "Nested @import() Global Support",
+ "file": "test/e2e/app-dir/scss/nested-global/nested-global.test.ts",
+ "passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "router autoscrolling on navigation with css modules vertical scroll when page imports css modules should scroll to top of document when navigating between to pages without layout when",
+ "name": "Nested @import() Global Support should render the page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "SCSS Support loader handling",
+ "file": "test/e2e/app-dir/scss/url-global/url-global.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "router autoscrolling on navigation with css modules vertical scroll when page imports css modules should scroll when clicking in JS",
+ "name": "SCSS Support loader handling CSS URL via `file-loader` should render the page",
"status": "passed"
}
]
},
{
- "name": "css-order strict",
- "file": "test/e2e/app-dir/css-order/css-order.test.ts",
- "passed": 176,
+ "name": "syntax-highlighter-crash",
+ "file": "test/e2e/app-dir/syntax-highlighter-crash/syntax-highlighter-crash.test.ts",
+ "passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "css-order strict should load correct styles navigating back again first -> second -> first -> second",
+ "name": "syntax-highlighter-crash should render the page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "disabled JS preloads",
+ "file": "test/e2e/disable-js-preload/test/index.test.js",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again first -> third -> first -> third",
+ "name": "disabled JS preloads should render the page",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first -> first-client -> first -> first-client",
+ "name": "disabled JS preloads should not have JS preload links",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "handle-non-hoisted-swc-helpers",
+ "file": "test/e2e/handle-non-hoisted-swc-helpers/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again first -> second-client -> first -> second-client",
+ "name": "handle-non-hoisted-swc-helpers should work",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "link-with-api-rewrite",
+ "file": "test/e2e/link-with-api-rewrite/index.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again second -> first -> second -> first",
+ "name": "link-with-api-rewrite should perform hard navigation for rewritten urls",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> third -> second -> third",
+ "name": "link-with-api-rewrite should perform hard navigation for direct urls",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Prerender crawler handling",
+ "file": "test/e2e/prerender-crawler.test.ts",
+ "passed": 3,
+ "failed": 0,
+ "skipped": 0,
+ "total": "3",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again second -> first-client -> second -> first-client",
+ "name": "Prerender crawler handling should return prerendered page for correctly",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> second-client -> second -> second-client",
+ "name": "Prerender crawler handling should return fallback for non-crawler correctly",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> first -> third -> first",
+ "name": "Prerender crawler handling should block for crawler correctly",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Type module interop",
+ "file": "test/e2e/type-module-interop/index.test.ts",
+ "passed": 4,
+ "failed": 0,
+ "skipped": 0,
+ "total": "4",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again third -> second -> third -> second",
+ "name": "Type module interop should render server-side",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> first-client -> third -> first-client",
+ "name": "Type module interop should render client-side",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> second-client -> third -> second-client",
+ "name": "Type module interop should render server-side with modules",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> first -> first-client -> first",
+ "name": "Type module interop should render client-side with modules",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir action handling",
+ "file": "test/e2e/app-dir/actions/app-action.test.ts",
+ "passed": 57,
+ "failed": 1,
+ "skipped": 2,
+ "total": "62",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating back again first-client -> second -> first-client -> second",
+ "name": "app-dir action handling should handle basic actions correctly",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> third -> first-client -> third",
+ "name": "app-dir action handling should report errors with bad inputs correctly",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> second-client -> first-client -> second-client",
+ "name": "app-dir action handling should support headers and cookies",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> first -> second-client -> first",
+ "name": "app-dir action handling should push new route when redirecting",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> second -> second-client -> second",
+ "name": "app-dir action handling should support headers in client imported actions",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> third -> second-client -> third",
+ "name": "app-dir action handling should not log errors for non-action form POSTs",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> first-client -> second-client -> first-client",
+ "name": "app-dir action handling should support setting cookies in route handlers with the correct overrides",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b",
+ "name": "app-dir action handling should support formData and redirect",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a",
+ "name": "app-dir action handling should support .bind",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b",
+ "name": "app-dir action handling should support chained .bind",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a",
+ "name": "app-dir action handling should support notFound (javascript disabled)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second",
+ "name": "app-dir action handling should support notFound",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third",
+ "name": "app-dir action handling should support uploading files",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first",
+ "name": "app-dir action handling should support hoc auth wrappers",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third",
+ "name": "app-dir action handling should support importing actions in client components",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first",
+ "name": "app-dir action handling should support importing the same action module instance in both server and action layers",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second",
+ "name": "app-dir action handling should not block navigation events while a server action is in flight",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b",
+ "name": "app-dir action handling should not block router.back() while a server action is in flight",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a",
+ "name": "app-dir action handling should trigger a refresh for a server action that gets discarded due to a navigation",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b",
+ "name": "app-dir action handling should trigger a refresh for a server action that also dispatches a navigation event",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a",
+ "name": "app-dir action handling should support next/dynamic with ssr: false",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "app-dir action handling should support next/dynamic with ssr: false (edge)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "app-dir action handling should only submit action once when resubmitting an action after navigation",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> second -> first -> second",
+ "name": "app-dir action handling should handle actions executed in quick succession",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> third -> first -> third",
+ "name": "app-dir action handling should 404 when POSTing an invalid server action",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> first-client -> first -> first-client",
+ "name": "app-dir action handling should be possible to catch network errors",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> second-client -> first -> second-client",
+ "name": "app-dir action handling should be possible to catch regular errors",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> first -> second -> first",
+ "name": "app-dir action handling should forward action request to a worker that contains the action handler (node)",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> third -> second -> third",
+ "name": "app-dir action handling should forward action request to a worker that contains the action handler (edge)",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> first-client -> second -> first-client",
+ "name": "app-dir action handling Edge SSR should handle basic actions correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> second-client -> second -> second-client",
+ "name": "app-dir action handling Edge SSR should return error response for hoc auth wrappers in edge runtime",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> first -> third -> first",
+ "name": "app-dir action handling Edge SSR should handle redirect to a relative URL in a single pass",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> second -> third -> second",
+ "name": "app-dir action handling Edge SSR should handle regular redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> first-client -> third -> first-client",
+ "name": "app-dir action handling Edge SSR should allow cookie and header async storages",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> second-client -> third -> second-client",
+ "name": "app-dir action handling Edge SSR should handle unicode search params",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> first -> first-client -> first",
+ "name": "app-dir action handling fetch actions should handle a fetch action initiated from a static page",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> second -> first-client -> second",
+ "name": "app-dir action handling fetch actions should handle redirect to a relative URL in a single pass",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> third -> first-client -> third",
+ "name": "app-dir action handling fetch actions should handle regular redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> second-client -> first-client -> second-client",
+ "name": "app-dir action handling fetch actions should handle redirects to routes that provide an invalid RSC response",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> first -> second-client -> first",
+ "name": "app-dir action handling fetch actions should handle revalidatePath",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> second -> second-client -> second",
+ "name": "app-dir action handling fetch actions should handle revalidateTag",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> third -> second-client -> third",
- "status": "passed"
+ "name": "app-dir action handling fetch actions should store revalidation data in the prefetch cache",
+ "status": "failed",
+ "reason": "Fetch action prefetch cache test is flakey",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/444"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> first-client -> second-client -> first-client",
+ "name": "app-dir action handling fetch actions should revalidate when cookies.set is called",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b",
+ "name": "app-dir action handling fetch actions should invalidate client cache on other routes when cookies.set is called",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a",
+ "name": "app-dir action handling fetch actions should revalidate when cookies.set is called in a client action",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b",
+ "name": "app-dir action handling fetch actions should invalidate client cache when tag is revalidated",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a",
+ "name": "app-dir action handling fetch actions should invalidate client cache when path is revalidated",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second",
+ "name": "app-dir action handling encryption should send encrypted values from the closed over closure",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third",
+ "name": "app-dir action handling redirects redirects properly when server action handler uses `redirect`",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first",
+ "name": "app-dir action handling redirects redirects properly when server action handler uses `permanentRedirect`",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third",
+ "name": "app-dir action handling redirects displays searchParams correctly when redirecting with SearchParams",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first",
+ "name": "app-dir action handling redirects merges cookies correctly when redirecting",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second",
+ "name": "app-dir action handling redirects redirects properly when server action handler redirects with a 307 status code",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b",
+ "name": "app-dir action handling redirects redirects properly when server action handler redirects with a 308 status code",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a",
+ "name": "app-dir action handling server actions render client components server component imported action should support importing client components from actions",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b",
+ "name": "app-dir action handling caching disabled by default should use no-store as default for server action",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a",
+ "name": "app-dir action handling caching disabled by default should not override force-cache in server action",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "app-dir action handling caching disabled by default should not override revalidate in server action",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a",
- "status": "passed"
+ "name": "app-dir action handling should log a warning when a server action is not found but an id is provided",
+ "status": "skipped",
+ "reason": "Uses CLI output"
},
{
- "name": "css-order strict should load correct styles navigating first -> second",
- "status": "passed"
- },
+ "name": "app-dir action handling should work with interception routes",
+ "status": "skipped",
+ "reason": "Uses CLI output"
+ }
+ ]
+ },
+ {
+ "name": "dynamic-data",
+ "file": "test/e2e/app-dir/dynamic-data/dynamic-data.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "3",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating first -> third",
+ "name": "dynamic-data should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "i18n-hybrid",
+ "file": "test/e2e/app-dir/i18n-hybrid/i18n-hybrid.test.js",
+ "passed": 9,
+ "failed": 0,
+ "skipped": 0,
+ "total": "9",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating first -> first-client",
+ "name": "i18n-hybrid does not resolve /en-CA/blog/first-post",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first -> second-client",
+ "name": "i18n-hybrid does not resolve /en-US/blog/first-post",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second -> first",
+ "name": "i18n-hybrid does not resolve /fr-CA/blog/first-post",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second -> third",
+ "name": "i18n-hybrid does not resolve /fr-FR/blog/first-post",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second -> first-client",
+ "name": "i18n-hybrid does resolve /about",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second -> second-client",
+ "name": "i18n-hybrid does resolve /en-CA/about",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> first",
+ "name": "i18n-hybrid does resolve /en-US/about",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> second",
+ "name": "i18n-hybrid does resolve /fr-CA/about",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> first-client",
+ "name": "i18n-hybrid does resolve /fr-FR/about",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Error test if the loader file export a named function",
+ "file": "test/e2e/app-dir/loader-file-named-export-custom-loader-error/loader-file-named-export-custom-loader-error.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "5",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating third -> second-client",
+ "name": "Error test if the loader file export a named function in Development should skip next deploy",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first-client -> first",
+ "name": "Error test if the loader file export a named function in Build and Start should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir - fetch warnings",
+ "file": "test/e2e/app-dir/logging/fetch-warning.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating first-client -> second",
+ "name": "app-dir - fetch warnings should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - next-image (with https)",
+ "file": "test/e2e/app-dir/next-image/next-image-https.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating first-client -> third",
+ "name": "app dir - next-image (with https) should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "pages-to-app-routing",
+ "file": "test/e2e/app-dir/pages-to-app-routing/pages-to-app-routing.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating first-client -> second-client",
+ "name": "pages-to-app-routing should work using browser",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "parallel-routes-catchall-default",
+ "file": "test/e2e/app-dir/parallel-routes-catchall-default/parallel-routes-catchall-default.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second-client -> first",
+ "name": "parallel-routes-catchall-default should match default paths before catch-all",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "prefetching-not-found",
+ "file": "test/e2e/app-dir/prefetching-not-found/prefetching-not-found.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second-client -> second",
+ "name": "prefetching-not-found should correctly navigate to/from a global 404 page when following links with prefetch=auto",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir root layout render once",
+ "file": "test/e2e/app-dir/root-layout-render-once/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second-client -> third",
+ "name": "app-dir root layout render once should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Basic Module Include Paths Support",
+ "file": "test/e2e/app-dir/scss/basic-module-include-paths/basic-module-include-paths.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second-client -> first-client",
+ "name": "Basic Module Include Paths Support should render the module",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "CSS Module Composes Usage (External)",
+ "file": "test/e2e/app-dir/scss/composes-external/composes-external.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating interleaved-a -> interleaved-b",
+ "name": "CSS Module Composes Usage (External) should render the module",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Invalid SCSS in _document",
+ "file": "test/e2e/app-dir/scss/invalid-module-document/invalid-module-document.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "SCSS Support loader handling Preprocessor loader order",
+ "file": "test/e2e/app-dir/scss/loader-order/loader-order.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating interleaved-b -> interleaved-a",
+ "name": "SCSS Support loader handling Preprocessor loader order should render the module",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Has CSS Module in computed styles in Production",
+ "file": "test/e2e/app-dir/scss/prod-module/prod-module.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating big-interleaved-a -> big-interleaved-b",
+ "name": "Has CSS Module in computed styles in Production should render the page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir trailingSlash handling",
+ "file": "test/e2e/app-dir/trailingslash/trailingslash.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating big-interleaved-b -> big-interleaved-a",
+ "name": "app-dir trailingSlash handling should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "basePath",
+ "file": "test/e2e/basepath.test.ts",
+ "passed": 60,
+ "failed": 0,
+ "skipped": 3,
+ "total": "65",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating pages-first -> pages-second",
+ "name": "basePath should navigate to /404 correctly client-side",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-first -> pages-third",
+ "name": "basePath should navigate to /_error correctly client-side",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-second -> pages-first",
+ "name": "basePath should navigate to external site and back",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-second -> pages-third",
+ "name": "basePath should handle query/hash correctly during query updating #hello? $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-third -> pages-first",
+ "name": "basePath should handle query/hash correctly during query updating #? $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-third -> pages-second",
+ "name": "basePath should handle query/hash correctly during query updating ## $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-interleaved-a -> pages-interleaved-b",
+ "name": "basePath should handle query/hash correctly during query updating ##? $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-interleaved-b -> pages-interleaved-a",
+ "name": "basePath should handle query/hash correctly during query updating ##hello? $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-reversed-a -> pages-reversed-b",
+ "name": "basePath should handle query/hash correctly during query updating ##hello $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-reversed-b -> pages-reversed-a",
+ "name": "basePath should handle query/hash correctly during query updating #hello?world $search",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "basePath should handle query/hash correctly during query updating #a ?hello=world",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "basePath should handle query/hash correctly during query updating #a ?hello",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> second",
+ "name": "basePath should handle query/hash correctly during query updating #a ?hello=",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> third",
+ "name": "basePath should navigate back correctly to a dynamic route",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> first-client",
+ "name": "basePath should respect basePath in amphtml link rel",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> second-client",
+ "name": "basePath should prefetch pages correctly when manually called",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> first",
+ "name": "basePath should prefetch pages correctly in viewport with ",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> third",
+ "name": "basePath should 404 for public file without basePath",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> first-client",
+ "name": "basePath should serve public file with basePath correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> second-client",
+ "name": "basePath should rewrite with basePath by default",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> first",
+ "name": "basePath should not rewrite without basePath without disabling",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> second",
+ "name": "basePath should not rewrite with basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> first-client",
+ "name": "basePath should rewrite without basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> second-client",
+ "name": "basePath should redirect with basePath by default",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> first",
+ "name": "basePath should not redirect without basePath without disabling",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> second",
+ "name": "basePath should not redirect with basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> third",
+ "name": "basePath should redirect without basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> second-client",
+ "name": "basePath should add header with basePath by default",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> first",
+ "name": "basePath should not add header without basePath without disabling",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> second",
+ "name": "basePath should not add header with basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> third",
+ "name": "basePath should add header without basePath when set to false",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> first-client",
+ "name": "basePath should update dynamic params after mount correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating interleaved-a -> interleaved-b",
+ "name": "basePath should navigate to index page with getStaticProps",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating interleaved-b -> interleaved-a",
+ "name": "basePath should work with nested folder with same name as basePath",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating big-interleaved-a -> big-interleaved-b",
+ "name": "basePath should work with normal dynamic page",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating big-interleaved-b -> big-interleaved-a",
+ "name": "basePath should work with hash links",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-first -> pages-second",
+ "name": "basePath should work with catch-all page",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-first -> pages-third",
+ "name": "basePath should redirect trailing slash correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-second -> pages-first",
+ "name": "basePath should redirect trailing slash on root correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-second -> pages-third",
+ "name": "basePath should navigate an absolute url",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-third -> pages-first",
+ "name": "basePath should 404 when manually adding basePath with ",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-third -> pages-second",
+ "name": "basePath should 404 when manually adding basePath with router.push",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-interleaved-a -> pages-interleaved-b",
+ "name": "basePath should 404 when manually adding basePath with router.replace",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-interleaved-b -> pages-interleaved-a",
+ "name": "basePath should show the hello page under the /docs prefix",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-reversed-a -> pages-reversed-b",
+ "name": "basePath should have correct router paths on first load of /",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-reversed-b -> pages-reversed-a",
+ "name": "basePath should have correct router paths on first load of /hello",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "basePath should fetch data for getStaticProps without reloading",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "basePath should fetch data for getServerSideProps without reloading",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on first",
+ "name": "basePath should have correct href for a link",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on second",
+ "name": "basePath should have correct href for a link to /",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on third",
+ "name": "basePath should show the other-page page under the /docs prefix",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on first-client",
+ "name": "basePath should have basePath field on Router",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on second-client",
+ "name": "basePath should navigate to the page without refresh",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on interleaved-a",
+ "name": "basePath should use urls with basepath in router events",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on interleaved-b",
+ "name": "basePath should use urls with basepath in router events for hash changes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on big-interleaved-a",
+ "name": "basePath should use urls with basepath in router events for cancelled routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on big-interleaved-b",
+ "name": "basePath should use urls with basepath in router events for failed route change",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on reversed-a",
+ "name": "basePath should allow URL query strings without refresh",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on reversed-b",
+ "name": "basePath should allow URL query strings on index without refresh",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on partial-reversed-a",
+ "name": "basePath should correctly replace state when same asPath but different url",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on partial-reversed-b",
- "status": "passed"
+ "name": "basePath should not update URL for a 404",
+ "status": "skipped",
+ "reason": "Hard-coded Vercel error message"
},
{
- "name": "css-order strict should load correct styles on pages-first",
- "status": "passed"
+ "name": "basePath should handle 404 urls that start with basePath",
+ "status": "skipped",
+ "reason": "Hard-coded Vercel error message"
},
{
- "name": "css-order strict should load correct styles on pages-second",
- "status": "passed"
- },
+ "name": "basePath should show 404 for page not under the /docs prefix",
+ "status": "skipped",
+ "reason": "Hard-coded Vercel error message"
+ }
+ ]
+ },
+ {
+ "name": "Middleware custom matchers basePath",
+ "file": "test/e2e/middleware-custom-matchers-basepath/test/index.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "4",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-third",
+ "name": "Middleware custom matchers basePath should not match",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-interleaved-a",
+ "name": "Middleware custom matchers basePath should not match",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "multi-zone",
+ "file": "test/e2e/multi-zone/multi-zone.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-interleaved-b",
+ "name": "multi-zone should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "og-api",
+ "file": "test/e2e/og-api/index.test.ts",
+ "passed": 4,
+ "failed": 0,
+ "skipped": 0,
+ "total": "4",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-reversed-a",
+ "name": "og-api should respond from index",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-reversed-b",
+ "name": "og-api should work in pages/api",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-partial-reversed-a",
+ "name": "og-api should work in app route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-partial-reversed-b",
+ "name": "og-api should work in app route in node runtime",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "useSelectedLayoutSegment(s) in Pages Router",
+ "file": "test/e2e/useselectedlayoutsegment-s-in-pages-router/useselectedlayoutsegment-s-in-pages-router.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles on first",
+ "name": "useSelectedLayoutSegment(s) in Pages Router Should render with `useSelectedLayoutSegment(s) hooks",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app a11y features",
+ "file": "test/e2e/app-dir/app-a11y/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles on second",
+ "name": "app a11y features should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir edge SSR",
+ "file": "test/e2e/app-dir/app-edge/app-edge.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles on third",
+ "name": "app-dir edge SSR should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-prefetch-static",
+ "file": "test/e2e/app-dir/app-prefetch-static/app-prefetch-static.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles on first-client",
+ "name": "app-prefetch-static should correctly navigate between static & dynamic pages",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-custom-routes",
+ "file": "test/e2e/app-dir/app-routes/app-custom-route-base-path.test.ts",
+ "passed": 62,
+ "failed": 0,
+ "skipped": 2,
+ "total": "65",
+ "testCases": [
{
- "name": "css-order loose should load correct styles on second-client",
+ "name": "app-custom-routes works with api prefix correctly statically generates correctly with no dynamic usage",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on interleaved-a",
+ "name": "app-custom-routes works with api prefix correctly does not statically generate with dynamic usage",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on interleaved-b",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/first/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on big-interleaved-a",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/second/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on big-interleaved-b",
+ "name": "app-custom-routes works with generateStaticParams correctly responds correctly on /static/three/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-first",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/first/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-second",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/second/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-third",
+ "name": "app-custom-routes works with generateStaticParams correctly revalidates correctly on /revalidate-1/three/data.json",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-interleaved-a",
+ "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-interleaved-b",
+ "name": "app-custom-routes basic fetch request with a response made via a GET request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-reversed-a",
+ "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-reversed-b",
+ "name": "app-custom-routes basic fetch request with a response made via a POST request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-partial-reversed-a",
+ "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-partial-reversed-b",
+ "name": "app-custom-routes basic fetch request with a response made via a PUT request responds correctly on /basic/vercel/endpoint",
"status": "passed"
- }
- ]
- },
- {
- "name": "css-order strict",
- "file": "test/e2e/app-dir/css-order/css-order.test.ts",
- "passed": 175,
- "failed": 1,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "css-order strict should load correct styles navigating back again first -> second -> first -> second",
+ "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first -> third -> first -> third",
+ "name": "app-custom-routes basic fetch request with a response made via a DELETE request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first -> first-client -> first -> first-client",
+ "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first -> second-client -> first -> second-client",
+ "name": "app-custom-routes basic fetch request with a response made via a PATCH request responds correctly on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> first -> second -> first",
+ "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> third -> second -> third",
+ "name": "app-custom-routes basic fetch request with a response abort via a GET request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> first-client -> second -> first-client",
+ "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second -> second-client -> second -> second-client",
+ "name": "app-custom-routes basic fetch request with a response abort via a POST request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> first -> third -> first",
+ "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> second -> third -> second",
+ "name": "app-custom-routes basic fetch request with a response abort via a PUT request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> first-client -> third -> first-client",
+ "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again third -> second-client -> third -> second-client",
+ "name": "app-custom-routes basic fetch request with a response abort via a DELETE request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> first -> first-client -> first",
+ "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> second -> first-client -> second",
+ "name": "app-custom-routes basic fetch request with a response abort via a PATCH request aborts without error on /basic/vercel/endpoint",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> third -> first-client -> third",
+ "name": "app-custom-routes basic fetch request with a response route groups routes to the correct handler",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again first-client -> second-client -> first-client -> second-client",
+ "name": "app-custom-routes basic fetch request with a response request can read query parameters",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> first -> second-client -> first",
+ "name": "app-custom-routes basic fetch request with a response request can read query parameters (edge)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> second -> second-client -> second",
+ "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.redirect() helper",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> third -> second-client -> third",
+ "name": "app-custom-routes basic fetch request with a response response supports the NextResponse.json() helper",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again second-client -> first-client -> second-client -> first-client",
+ "name": "app-custom-routes body can handle handle a streaming request and streaming response (edge)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b",
+ "name": "app-custom-routes body can read a JSON encoded body",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a",
+ "name": "app-custom-routes body can read a JSON encoded body (edge)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b",
+ "name": "app-custom-routes body can read a JSON encoded body for DELETE requests",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a",
+ "name": "app-custom-routes body can read a JSON encoded body for OPTIONS requests",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second",
+ "name": "app-custom-routes body can read a streamed JSON encoded body (edge)",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third",
+ "name": "app-custom-routes body can read the text body",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first",
- "status": "failed"
+ "name": "app-custom-routes body can read the text body (edge)",
+ "status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third",
+ "name": "app-custom-routes context provides params to routes with dynamic parameters",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first",
+ "name": "app-custom-routes context provides params to routes with catch-all routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second",
+ "name": "app-custom-routes context does not provide params to routes without dynamic parameters",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b",
+ "name": "app-custom-routes hooks headers gets the correct values",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a",
+ "name": "app-custom-routes hooks cookies gets the correct values",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b",
+ "name": "app-custom-routes hooks req.cookies gets the correct values",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a",
+ "name": "app-custom-routes hooks cookies().has() gets the correct values",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "app-custom-routes hooks redirect can respond correctly",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "app-custom-routes hooks permanentRedirect can respond correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> second -> first -> second",
+ "name": "app-custom-routes hooks notFound can respond correctly in nodejs",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> third -> first -> third",
+ "name": "app-custom-routes hooks notFound can respond correctly in edge",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> first-client -> first -> first-client",
+ "name": "app-custom-routes error conditions responds with 405 (Method Not Allowed) when method is not implemented",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first -> second-client -> first -> second-client",
+ "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler throws an error",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> first -> second -> first",
+ "name": "app-custom-routes error conditions responds with 500 (Internal Server Error) when the handler calls NextResponse.next()",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> third -> second -> third",
+ "name": "app-custom-routes automatic implementations implements HEAD on routes with GET already implemented",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> first-client -> second -> first-client",
+ "name": "app-custom-routes automatic implementations implements OPTIONS on routes",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second -> second-client -> second -> second-client",
+ "name": "app-custom-routes edge functions returns response using edge runtime",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> first -> third -> first",
+ "name": "app-custom-routes edge functions returns a response when headers are accessed",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> second -> third -> second",
+ "name": "app-custom-routes dynamic = \"force-static\" strips search, headers, and domain from request",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> first-client -> third -> first-client",
+ "name": "app-custom-routes customized metadata routes should work if conflict with metadata routes convention",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again third -> second-client -> third -> second-client",
+ "name": "app-custom-routes no bundle error should not print bundling warning about React",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> first -> first-client -> first",
- "status": "passed"
+ "name": "app-custom-routes no response returned should print an error when no response is returned",
+ "status": "skipped",
+ "reason": "Uses CLI output"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> second -> first-client -> second",
+ "name": "app-custom-routes error conditions responds with 400 (Bad Request) when the requested method is not a valid HTTP method",
+ "status": "skipped",
+ "reason": "Uses CLI output"
+ }
+ ]
+ },
+ {
+ "name": "dynamic-interception-route-revalidate",
+ "file": "test/e2e/app-dir/dynamic-interception-route-revalidate/dynamic-interception-route-revalidate.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
+ {
+ "name": "dynamic-interception-route-revalidate should refresh the dynamic intercepted route when the interception route is revalidated",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - global error",
+ "file": "test/e2e/app-dir/global-error/basic/index.test.ts",
+ "passed": 6,
+ "failed": 0,
+ "skipped": 0,
+ "total": "6",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating back again first-client -> third -> first-client -> third",
+ "name": "app dir - global error should trigger error component when an error happens during rendering",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again first-client -> second-client -> first-client -> second-client",
+ "name": "app dir - global error should render global error for error in server components",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> first -> second-client -> first",
+ "name": "app dir - global error should render global error for error in client components",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> second -> second-client -> second",
+ "name": "app dir - global error should catch metadata error in error boundary if presented",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> third -> second-client -> third",
+ "name": "app dir - global error should catch metadata error in global-error if no error boundary is presented",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again second-client -> first-client -> second-client -> first-client",
+ "name": "app dir - global error should catch the client error thrown in the nested routes",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - metadata dynamic routes",
+ "file": "test/e2e/app-dir/metadata-dynamic-routes/index.test.ts",
+ "passed": 10,
+ "failed": 0,
+ "skipped": 12,
+ "total": "19",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b",
+ "name": "app dir - metadata dynamic routes text routes should not throw if client components are imported but not used",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a",
+ "name": "app dir - metadata dynamic routes text routes should support alternate.languages in sitemap",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b",
+ "name": "app dir - metadata dynamic routes social image routes should support generate multi images with generateImageMetadata",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a",
+ "name": "app dir - metadata dynamic routes social image routes should support generate multi sitemaps with generateSitemaps",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second",
+ "name": "app dir - metadata dynamic routes social image routes should fill params into dynamic routes url of metadata images",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third",
+ "name": "app dir - metadata dynamic routes social image routes should support params as argument in dynamic routes",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first",
+ "name": "app dir - metadata dynamic routes social image routes should fill params into routes groups url of static images",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third",
+ "name": "app dir - metadata dynamic routes social image routes should handle custom fonts in both edge and nodejs runtime",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first",
+ "name": "app dir - metadata dynamic routes should generate unique path for image routes under group routes",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second",
+ "name": "app dir - metadata dynamic routes should pick configured metadataBase instead of deployment url for canonical url",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes text routes should handle robots.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes text routes should handle sitemap.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes robots.txt should handle robots.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes sitemap should handle sitemap.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes robots.txt should handle sitemap.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order loose should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes social image routes should handle manifest.[ext] dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating first -> second",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes social image routes should render og image with opengraph-image dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating first -> third",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes social image routes should render og image with twitter-image dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating first -> first-client",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes icon image routes should render icon with dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating first -> second-client",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes icon image routes should render apple icon with dynamic routes",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating second -> first",
- "status": "passed"
+ "name": "app dir - metadata dynamic routes should inject dynamic metadata properly to head",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
},
{
- "name": "css-order strict should load correct styles navigating second -> third",
+ "name": "app dir - metadata dynamic routes should use localhost for local prod and fallback to deployment url when metadataBase is falsy",
+ "status": "skipped",
+ "reason": "Header whitespace mismatch"
+ }
+ ]
+ },
+ {
+ "name": "app dir - next config",
+ "file": "test/e2e/app-dir/next-config/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
+ {
+ "name": "app dir - next config should support importing webpack in next.config",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - not-found - group route",
+ "file": "test/e2e/app-dir/not-found/group-route/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second -> first-client",
+ "name": "app dir - not-found - group route should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "parallel-routes-and-interception",
+ "file": "test/e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts",
+ "passed": 24,
+ "failed": 0,
+ "skipped": 2,
+ "total": "25",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating second -> second-client",
+ "name": "parallel-routes-and-interception parallel routes should support parallel route tab bars",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> first",
+ "name": "parallel-routes-and-interception parallel routes should match parallel routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> second",
+ "name": "parallel-routes-and-interception parallel routes should match parallel routes in route groups",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> first-client",
+ "name": "parallel-routes-and-interception parallel routes should throw a 404 when no matching parallel route is found",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating third -> second-client",
+ "name": "parallel-routes-and-interception parallel routes should render nested parallel routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first-client -> first",
+ "name": "parallel-routes-and-interception parallel routes should support layout files in parallel routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first-client -> second",
+ "name": "parallel-routes-and-interception parallel routes should only scroll to the parallel route that was navigated to",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first-client -> third",
+ "name": "parallel-routes-and-interception parallel routes should apply the catch-all route to the parallel route if no matching route is found",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating first-client -> second-client",
+ "name": "parallel-routes-and-interception parallel routes should match the catch-all routes of the more specific path, if there is more than one catch-all route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second-client -> first",
+ "name": "parallel-routes-and-interception parallel routes should navigate with a link with prefetch=false",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second-client -> second",
+ "name": "parallel-routes-and-interception parallel routes should display all parallel route params with useParams",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second-client -> third",
+ "name": "parallel-routes-and-interception parallel routes should load CSS for a default page that exports another page",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating second-client -> first-client",
+ "name": "parallel-routes-and-interception parallel routes should handle a loading state",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating interleaved-a -> interleaved-b",
+ "name": "parallel-routes-and-interception route intercepting with dynamic routes should render intercepted route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating interleaved-b -> interleaved-a",
+ "name": "parallel-routes-and-interception route intercepting with dynamic optional catch-all routes should render intercepted route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating big-interleaved-a -> big-interleaved-b",
+ "name": "parallel-routes-and-interception route intercepting with dynamic catch-all routes should render intercepted route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating big-interleaved-b -> big-interleaved-a",
+ "name": "parallel-routes-and-interception route intercepting should render intercepted route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-first -> pages-second",
+ "name": "parallel-routes-and-interception route intercepting should render an intercepted route from a slot",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-first -> pages-third",
+ "name": "parallel-routes-and-interception route intercepting should render an intercepted route at the top level from a nested path",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-second -> pages-first",
+ "name": "parallel-routes-and-interception route intercepting should render intercepted route from a nested route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-second -> pages-third",
+ "name": "parallel-routes-and-interception route intercepting should re-render the layout on the server when it had a default child route",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-third -> pages-first",
+ "name": "parallel-routes-and-interception route intercepting should render modal when paired with parallel routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-third -> pages-second",
+ "name": "parallel-routes-and-interception route intercepting should support intercepting with beforeFiles rewrites",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-interleaved-a -> pages-interleaved-b",
+ "name": "parallel-routes-and-interception route intercepting should support intercepting local dynamic sibling routes",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles navigating pages-interleaved-b -> pages-interleaved-a",
- "status": "passed"
+ "name": "parallel-routes-and-interception parallel routes should gracefully handle when two page segments match the `children` parallel slot",
+ "status": "skipped",
+ "reason": "Tries to patch deployed files"
},
{
- "name": "css-order strict should load correct styles navigating pages-reversed-a -> pages-reversed-b",
+ "name": "parallel-routes-and-interception with patching should gracefully handle when two page segments match the `children` parallel slot",
+ "status": "skipped",
+ "reason": "Tries to patch deployed files"
+ }
+ ]
+ },
+ {
+ "name": "Dynamic Route CSS Module Usage",
+ "file": "test/e2e/app-dir/scss/dynamic-route-module/dynamic-route-module.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
+ {
+ "name": "Dynamic Route CSS Module Usage should apply styles correctly",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "CSS Import from node_modules",
+ "file": "test/e2e/app-dir/scss/npm-import-bad/npm-import-bad.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "Basic Global Support scss",
+ "file": "test/e2e/app-dir/scss/single-global/single-global.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating pages-reversed-b -> pages-reversed-a",
+ "name": "Basic Global Support scss should render the page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - taint",
+ "file": "test/e2e/app-dir/taint/process-taint.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "app dir - taint should error when passing process env to client component",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "basePath + trailingSlash",
+ "file": "test/e2e/basepath-trailing-slash.test.ts",
+ "passed": 3,
+ "failed": 0,
+ "skipped": 0,
+ "total": "3",
+ "testCases": [
{
- "name": "css-order strict should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "basePath + trailingSlash should allow URL query strings without refresh",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> second",
+ "name": "basePath + trailingSlash should allow URL query strings on index without refresh",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> third",
+ "name": "basePath + trailingSlash should correctly replace state when same asPath but different url",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Configurable runtime for src/pages and API routes",
+ "file": "test/e2e/edge-configurable-runtime/index.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": []
+ },
+ {
+ "name": "edge-render-getserversideprops",
+ "file": "test/e2e/edge-pages-support/index.test.ts",
+ "passed": 8,
+ "failed": 0,
+ "skipped": 0,
+ "total": "8",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating first -> first-client",
+ "name": "edge-render-getserversideprops should have correct query for pages/api",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first -> second-client",
+ "name": "edge-render-getserversideprops should have correct query for pages/api dynamic",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> first",
+ "name": "edge-render-getserversideprops should have correct query/params on index",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> third",
+ "name": "edge-render-getserversideprops should have correct query/params on /[id]",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> first-client",
+ "name": "edge-render-getserversideprops should have correct query/params on rewrite",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second -> second-client",
- "status": "passed"
- },
- {
- "name": "css-order loose should load correct styles navigating third -> first",
+ "name": "edge-render-getserversideprops should have correct query/params on dynamic rewrite",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> second",
+ "name": "edge-render-getserversideprops should respond to _next/data for index correctly",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating third -> first-client",
+ "name": "edge-render-getserversideprops should respond to _next/data for [id] correctly",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "i18n-disallow-multiple-locales",
+ "file": "test/e2e/i18n-disallow-multiple-locales/i18n-disallow-multiple-locales.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating third -> second-client",
+ "name": "i18n-disallow-multiple-locales should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "i18n-ignore-redirect-source-locale",
+ "file": "test/e2e/i18n-ignore-redirect-source-locale/redirects.test.ts",
+ "passed": 16,
+ "failed": 0,
+ "skipped": 0,
+ "total": "16",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating first-client -> first",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: to: sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> second",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /en to: sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> third",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /sv to: sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating first-client -> second-client",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /nl to: sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> first",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: to: en",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> second",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /en to: en",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> third",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /sv to: en",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating second-client -> first-client",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /nl to: en",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating interleaved-a -> interleaved-b",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: to: /",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating interleaved-b -> interleaved-a",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /en to: /",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating big-interleaved-a -> big-interleaved-b",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /sv to: /",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating big-interleaved-b -> big-interleaved-a",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from: /nl to: /",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-first -> pages-second",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from and to: ",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-first -> pages-third",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from and to: /en",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-second -> pages-first",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from and to: /sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-second -> pages-third",
+ "name": "i18n-ignore-redirect-source-locale get redirected to the new page, from and to: /nl",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Middleware custom matchers basePath",
+ "file": "test/e2e/middleware-dynamic-basepath-matcher/test/index.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "4",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-third -> pages-first",
+ "name": "Middleware custom matchers basePath should not match",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-third -> pages-second",
+ "name": "Middleware custom matchers basePath should not match",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "New Link Behavior with material-ui",
+ "file": "test/e2e/new-link-behavior/material-ui.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-interleaved-a -> pages-interleaved-b",
+ "name": "New Link Behavior with material-ui should render MuiLink with ",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "next/font/google fetch error",
+ "file": "test/e2e/next-font/google-fetch-error.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-interleaved-b -> pages-interleaved-a",
+ "name": "next/font/google fetch error should skip next deploy for now",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "next-image-forward-ref",
+ "file": "test/e2e/next-image-forward-ref/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-reversed-a -> pages-reversed-b",
+ "name": "next-image-forward-ref allows framer-motion to animate opacity",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "reload-scroll-back-restoration",
+ "file": "test/e2e/reload-scroll-backforward-restoration/index.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-reversed-b -> pages-reversed-a",
+ "name": "reload-scroll-back-restoration should restore the scroll position on navigating back",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b",
+ "name": "reload-scroll-back-restoration should restore the scroll position on navigating forward",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "testmode",
+ "file": "test/e2e/testmode/testmode.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order loose should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a",
+ "name": "testmode should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir alias",
+ "file": "test/e2e/app-dir/app-alias/app-alias.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on first",
+ "name": "app-dir alias should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir edge runtime root layout",
+ "file": "test/e2e/app-dir/app-edge-root-layout/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on second",
+ "name": "app-dir edge runtime root layout should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "referencing a client component in an app route",
+ "file": "test/e2e/app-dir/app-routes-client-component/app-routes-client-component.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on third",
+ "name": "referencing a client component in an app route responds without error",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - not-found - basic",
+ "file": "test/e2e/app-dir/not-found/basic/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on first-client",
+ "name": "app dir - not-found - basic should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "parallel-routes-and-interception",
+ "file": "test/e2e/app-dir/parallel-routes-not-found/parallel-routes-not-found.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on second-client",
+ "name": "parallel-routes-and-interception should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "route-page-manifest-bug",
+ "file": "test/e2e/app-dir/route-page-manifest-bug/route-page-manifest-bug.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on interleaved-a",
+ "name": "route-page-manifest-bug should work when requesting route handler after page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Basic Module Prepend Data Support",
+ "file": "test/e2e/app-dir/scss/basic-module-prepend-data/basic-module-prepend-data.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on interleaved-b",
+ "name": "Basic Module Prepend Data Support should render the module",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "SCSS Support",
+ "file": "test/e2e/app-dir/scss/compilation-and-prefixing/compilation-and-prefixing.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on big-interleaved-a",
+ "name": "SCSS Support Production only CSS Compilation and Prefixing should've compiled and prefixed",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on big-interleaved-b",
+ "name": "SCSS Support Production only CSS Compilation and Prefixing should've emitted a source map",
"status": "passed"
- },
- {
- "name": "css-order strict should load correct styles on reversed-a",
+ }
+ ]
+ },
+ {
+ "name": "Invalid CSS Module Usage in node_modules",
+ "file": "test/e2e/app-dir/scss/invalid-module/invalid-module.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "(SCSS) Multi Global Support (reversed)",
+ "file": "test/e2e/app-dir/scss/multi-global-reversed/multi-global-reversed.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
+ {
+ "name": "(SCSS) Multi Global Support (reversed) should render the page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "Scss Mixins",
+ "file": "test/e2e/app-dir/scss/scss-mixins/scss-mixins.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on reversed-b",
+ "name": "Scss Mixins should work using browser",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "server-actions-relative-redirect",
+ "file": "test/e2e/app-dir/server-actions-relative-redirect/server-actions-relative-redirect.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on partial-reversed-a",
+ "name": "server-actions-relative-redirect should work with relative redirect",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on partial-reversed-b",
+ "name": "server-actions-relative-redirect should work with absolute redirect",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "turbopack-reports",
+ "file": "test/e2e/app-dir/turbopack-reports/turbopack-reports.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-first",
+ "name": "turbopack-reports should render page importing sqlite3",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "promise export",
+ "file": "test/e2e/config-promise-export/promise.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-second",
+ "name": "promise export should work",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "fetch failures have good stack traces in edge runtime",
+ "file": "test/e2e/fetch-failures-have-good-stack-traces-in-edge-runtime/fetch-failures-have-good-stack-traces-in-edge-runtime.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "css-order strict should load correct styles on pages-third",
+ "name": "fetch failures have good stack traces in edge runtime should skip next deploy",
"status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "i18n-ignore-rewrite-source-locale with basepath",
+ "file": "test/e2e/i18n-ignore-rewrite-source-locale/rewrites-with-basepath.test.ts",
+ "passed": 4,
+ "failed": 4,
+ "skipped": 0,
+ "total": "8",
+ "testCases": [
+ {
+ "name": "i18n-ignore-rewrite-source-locale with basepath get public file by skipping locale in rewrite, locale: ",
+ "status": "failed",
+ "reason": "Middleware on sites with i18n cannot rewrite to static files",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/383"
},
{
- "name": "css-order strict should load correct styles on pages-interleaved-a",
- "status": "passed"
+ "name": "i18n-ignore-rewrite-source-locale with basepath get public file by skipping locale in rewrite, locale: /en",
+ "status": "failed",
+ "reason": "Middleware on sites with i18n cannot rewrite to static files",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/383"
},
{
- "name": "css-order strict should load correct styles on pages-interleaved-b",
- "status": "passed"
+ "name": "i18n-ignore-rewrite-source-locale with basepath get public file by skipping locale in rewrite, locale: /sv",
+ "status": "failed",
+ "reason": "Middleware on sites with i18n cannot rewrite to static files",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/383"
},
{
- "name": "css-order strict should load correct styles on pages-reversed-a",
- "status": "passed"
+ "name": "i18n-ignore-rewrite-source-locale with basepath get public file by skipping locale in rewrite, locale: /nl",
+ "status": "failed",
+ "reason": "Middleware on sites with i18n cannot rewrite to static files",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/383"
},
{
- "name": "css-order strict should load correct styles on pages-reversed-b",
+ "name": "i18n-ignore-rewrite-source-locale with basepath call api by skipping locale in rewrite, locale: ",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-partial-reversed-a",
+ "name": "i18n-ignore-rewrite-source-locale with basepath call api by skipping locale in rewrite, locale: /en",
"status": "passed"
},
{
- "name": "css-order strict should load correct styles on pages-partial-reversed-b",
+ "name": "i18n-ignore-rewrite-source-locale with basepath call api by skipping locale in rewrite, locale: /sv",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on first",
+ "name": "i18n-ignore-rewrite-source-locale with basepath call api by skipping locale in rewrite, locale: /nl",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "instrumentation-hook-rsc",
+ "file": "test/e2e/instrumentation-hook-src/instrumentation-hook-src.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
+ {
+ "name": "instrumentation-hook-rsc instrumentation should skip next deploy",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "Middleware Redirect",
+ "file": "test/e2e/middleware-redirects/test/index.test.ts",
+ "passed": 18,
+ "failed": 0,
+ "skipped": 0,
+ "total": "18",
+ "testCases": [
+ {
+ "name": "Middleware Redirect should redirect correctly with redirect in next.config.js",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on second",
+ "name": "Middleware Redirect does not include the locale in redirects by default",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on third",
+ "name": "Middleware Redirect should redirect to data urls with data requests and internal redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on first-client",
+ "name": "Middleware Redirect should redirect to external urls with data requests and external redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on second-client",
+ "name": "Middleware Redirect should redirect",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on interleaved-a",
+ "name": "Middleware Redirect should implement internal redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on interleaved-b",
+ "name": "Middleware Redirect should redirect cleanly with the original url param",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on big-interleaved-a",
+ "name": "Middleware Redirect should redirect multiple times",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on big-interleaved-b",
+ "name": "Middleware Redirect should redirect (infinite-loop)",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-first",
+ "name": "Middleware Redirect should redirect to api route with locale",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-second",
+ "name": "Middleware Redirect should redirect with a fragment",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-third",
+ "name": "Middleware Redirect /fr should redirect",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-interleaved-a",
+ "name": "Middleware Redirect /fr should implement internal redirects",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-interleaved-b",
+ "name": "Middleware Redirect /fr should redirect cleanly with the original url param",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-reversed-a",
+ "name": "Middleware Redirect /fr should redirect multiple times",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-reversed-b",
+ "name": "Middleware Redirect /fr should redirect (infinite-loop)",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-partial-reversed-a",
+ "name": "Middleware Redirect /fr should redirect to api route with locale",
"status": "passed"
},
{
- "name": "css-order loose should load correct styles on pages-partial-reversed-b",
+ "name": "Middleware Redirect /fr should redirect with a fragment",
"status": "passed"
}
]
},
{
- "name": "app-dir - errors",
- "file": "test/e2e/app-dir/errors/index.test.ts",
+ "name": "next/font/google with-font-declarations-file",
+ "file": "test/e2e/next-font/with-font-declarations-file.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app-dir - errors should skip next deploy",
+ "name": "next/font/google with-font-declarations-file should skip next deploy for now",
"status": "passed"
}
]
},
{
- "name": "app dir - global error - with catch-all route",
- "file": "test/e2e/app-dir/global-error/catch-all/index.test.ts",
- "passed": 1,
+ "name": "_allow-underscored-root-directory",
+ "file": "test/e2e/app-dir/_allow-underscored-root-directory/_allow-underscored-root-directory.test.ts",
+ "passed": 3,
"failed": 0,
"skipped": 0,
+ "total": "3",
"testCases": [
{
- "name": "app dir - global error - with catch-all route should skip next deploy",
+ "name": "_allow-underscored-root-directory should not serve app path with underscore",
+ "status": "passed"
+ },
+ {
+ "name": "_allow-underscored-root-directory should pages path with a underscore at the root",
+ "status": "passed"
+ },
+ {
+ "name": "_allow-underscored-root-directory should serve app path with %5F",
"status": "passed"
}
]
},
{
- "name": "hello-world",
- "file": "test/e2e/app-dir/hello-world/hello-world.test.ts",
- "passed": 4,
+ "name": "custom-app-server-action-redirect",
+ "file": "test/e2e/app-dir/app-basepath-custom-server/index.test.ts",
+ "passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "hello-world should work using cheerio",
- "status": "passed"
- },
- {
- "name": "hello-world should work using browser",
+ "name": "custom-app-server-action-redirect should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app dir - css",
+ "file": "test/e2e/app-dir/app-css/index.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": [
{
- "name": "hello-world should work with html",
+ "name": "app dir - css should skip next deploy",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "app-dir assetPrefix with basePath handling",
+ "file": "test/e2e/app-dir/asset-prefix-with-basepath/asset-prefix-with-basepath.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "6",
+ "testCases": [
{
- "name": "hello-world should work with fetch",
+ "name": "app-dir assetPrefix with basePath handling should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "i18n-hybrid",
- "file": "test/e2e/app-dir/i18n-hybrid/i18n-hybrid.test.js",
- "passed": 9,
+ "name": "dynamic-href",
+ "file": "test/e2e/app-dir/dynamic-href/dynamic-href.test.ts",
+ "passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "i18n-hybrid does not resolve /en-CA/blog/first-post",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does not resolve /en-US/blog/first-post",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does not resolve /fr-CA/blog/first-post",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does not resolve /fr-FR/blog/first-post",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does resolve /about",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does resolve /en-CA/about",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does resolve /en-US/about",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does resolve /fr-CA/about",
- "status": "passed"
- },
- {
- "name": "i18n-hybrid does resolve /fr-FR/about",
+ "name": "dynamic-href should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "interception-routes-root-catchall",
- "file": "test/e2e/app-dir/interception-routes-root-catchall/interception-routes-root-catchall.test.ts",
- "passed": 2,
+ "name": "app dir - emotion-js",
+ "file": "test/e2e/app-dir/emotion-js/index.test.ts",
+ "passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "interception-routes-root-catchall should support having a root catch-all and a catch-all in a parallel route group",
- "status": "passed"
- },
- {
- "name": "interception-routes-root-catchall should handle non-intercepted catch-all pages",
+ "name": "app dir - emotion-js should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "Error test if the loader file export a named function",
- "file": "test/e2e/app-dir/loader-file-named-export-custom-loader-error/loader-file-named-export-custom-loader-error.test.ts",
- "passed": 2,
+ "name": "app dir - hooks",
+ "file": "test/e2e/app-dir/hooks/hooks.test.ts",
+ "passed": 25,
"failed": 0,
"skipped": 0,
+ "total": "25",
"testCases": [
{
- "name": "Error test if the loader file export a named function in Development should skip next deploy",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/static",
"status": "passed"
},
{
- "name": "Error test if the loader file export a named function in Build and Start should skip next deploy",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/1",
"status": "passed"
- }
- ]
- },
- {
- "name": "mdx with-mdx-rs",
- "file": "test/e2e/app-dir/mdx/mdx.test.ts",
- "passed": 22,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "mdx with-mdx-rs app directory should work in initial html",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/2",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs app directory should work using browser",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/1/account",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs app directory should work in initial html with mdx import",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/static",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs app directory should work using browser with mdx import",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/1",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs app directory should allow overriding components",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/2",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs app directory should allow importing client components",
+ "name": "app dir - hooks from pages should have the correct hooks at /adapter-hooks/1/account",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs pages directory should work in initial html",
+ "name": "app dir - hooks usePathname should have the correct pathname",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs pages directory should work using browser",
+ "name": "app dir - hooks usePathname should have the canonical url pathname on rewrite",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs pages directory should work in initial html with mdx import",
+ "name": "app dir - hooks useSearchParams should have the correct search params",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs pages directory should work using browser with mdx import",
+ "name": "app dir - hooks useDraftMode should use initial rand when draft mode be disabled",
"status": "passed"
},
{
- "name": "mdx with-mdx-rs pages directory should allow overriding components",
+ "name": "app dir - hooks useDraftMode should generate rand when draft mode enabled",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should work in initial html",
+ "name": "app dir - hooks useRouter should allow access to the router",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should work using browser",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/first",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should work in initial html with mdx import",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/first/slug1",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should work using browser with mdx import",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/first/slug2/second",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should allow overriding components",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/first/slug2/second/a/b",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs app directory should allow importing client components",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/rewritten",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs pages directory should work in initial html",
+ "name": "app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/rewritten-middleware",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs pages directory should work using browser",
+ "name": "app dir - hooks useSelectedLayoutSegments should return an empty array in pages",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs pages directory should work in initial html with mdx import",
+ "name": "app dir - hooks useSelectedLayoutSegment should have the correct layout segment at /hooks/use-selected-layout-segment/first",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs pages directory should work using browser with mdx import",
+ "name": "app dir - hooks useSelectedLayoutSegment should have the correct layout segment at /hooks/use-selected-layout-segment/first/slug1",
"status": "passed"
},
{
- "name": "mdx without-mdx-rs pages directory should allow overriding components",
+ "name": "app dir - hooks useSelectedLayoutSegment should have the correct layout segment at /hooks/use-selected-layout-segment/first/slug2/second/a/b",
+ "status": "passed"
+ },
+ {
+ "name": "app dir - hooks useSelectedLayoutSegment should return null in pages",
"status": "passed"
}
]
},
{
- "name": "app dir - metadata dynamic routes suspense",
- "file": "test/e2e/app-dir/metadata-suspense/index.test.ts",
+ "name": "app dir - Metadata API on the Edge runtime",
+ "file": "test/e2e/app-dir/metadata-edge/index.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app dir - metadata dynamic routes suspense should skip next deploy",
+ "name": "app dir - Metadata API on the Edge runtime should render OpenGraph image meta tag correctly",
"status": "passed"
}
]
},
{
- "name": "mjs as extension",
- "file": "test/e2e/app-dir/mjs-as-extension/mjs-as-extension.test.ts",
- "passed": 1,
+ "name": "app dir - next/font",
+ "file": "test/e2e/app-dir/next-font/next-font.test.ts",
+ "passed": 2,
"failed": 0,
"skipped": 0,
+ "total": "2",
"testCases": [
{
- "name": "mjs as extension should render the page correctly",
+ "name": "app dir - next/font app app dir - next-font should skip next deploy",
+ "status": "passed"
+ },
+ {
+ "name": "app dir - next/font app-old app dir - next-font should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "app dir - next config",
- "file": "test/e2e/app-dir/next-config/index.test.ts",
+ "name": "app dir - group routes with root not-found",
+ "file": "test/e2e/app-dir/not-found/group-route-root-not-found/index.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app dir - next config should support importing webpack in next.config",
+ "name": "app dir - group routes with root not-found should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "app dir - next-image (with https)",
- "file": "test/e2e/app-dir/next-image/next-image-https.test.ts",
- "passed": 1,
+ "name": "parallel-routes-and-interception-basepath",
+ "file": "test/e2e/app-dir/parallel-routes-and-interception-basepath/parallel-routes-and-interception-basepath.test.ts",
+ "passed": 2,
"failed": 0,
"skipped": 0,
+ "total": "2",
"testCases": [
{
- "name": "app dir - next-image (with https) should skip next deploy",
+ "name": "parallel-routes-and-interception-basepath should show parallel intercepted slot with basepath",
+ "status": "passed"
+ },
+ {
+ "name": "parallel-routes-and-interception-basepath should show normal route via direct link with basepath when parallel intercepted slot exist",
"status": "passed"
}
]
},
{
- "name": "app dir - next-image",
- "file": "test/e2e/app-dir/next-image/next-image.test.ts",
+ "name": "parallel-routes-catchall-slotted-non-catchalls",
+ "file": "test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/parallel-routes-catchall-slotted-non-catchalls.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app dir - next-image should skip next deploy",
+ "name": "parallel-routes-catchall-slotted-non-catchalls should match default and dynamic segment paths before catch-all",
"status": "passed"
}
]
},
{
- "name": "app dir - not-found - conflict route",
- "file": "test/e2e/app-dir/not-found/conflict-route/index.test.ts",
+ "name": "scripts",
+ "file": "test/e2e/app-dir/resource-url-encoding/resource-url-encoding.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "4",
+ "testCases": []
+ },
+ {
+ "name": "root-layout-redirect",
+ "file": "test/e2e/app-dir/root-layout-redirect/root-layout-redirect.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app dir - not-found - conflict route should skip next deploy",
+ "name": "root-layout-redirect should work using browser",
"status": "passed"
}
]
},
{
- "name": "app dir - group routes with root not-found",
- "file": "test/e2e/app-dir/not-found/group-route-root-not-found/index.test.ts",
+ "name": "3rd Party CSS Module Support",
+ "file": "test/e2e/app-dir/scss/3rd-party-module/3rd-party-module.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "app dir - group routes with root not-found should skip next deploy",
+ "name": "3rd Party CSS Module Support should render the module",
"status": "passed"
}
]
},
{
- "name": "pages-to-app-routing",
- "file": "test/e2e/app-dir/pages-to-app-routing/pages-to-app-routing.test.ts",
+ "name": "Basic SCSS Module Support",
+ "file": "test/e2e/app-dir/scss/basic-module/basic-module.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "pages-to-app-routing should work using browser",
+ "name": "Basic SCSS Module Support should render the module",
"status": "passed"
}
]
},
{
- "name": "parallel-routes-and-interception",
- "file": "test/e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts",
- "passed": 21,
- "failed": 3,
- "skipped": 1,
+ "name": "SCSS Support loader handling Data Urls",
+ "file": "test/e2e/app-dir/scss/data-url/data-url.test.ts",
+ "passed": 1,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "parallel-routes-and-interception parallel routes should support parallel route tab bars",
- "status": "failed"
- },
+ "name": "SCSS Support loader handling Data Urls should render the module",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "Can hot reload CSS Module without losing state",
+ "file": "test/e2e/app-dir/scss/hmr-module/hmr-module.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "Invalid Global CSS with Custom App",
+ "file": "test/e2e/app-dir/scss/invalid-global-with-app/invalid-global-with-app.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "SCSS Support",
+ "file": "test/e2e/app-dir/scss/multi-page/multi-page.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
{
- "name": "parallel-routes-and-interception parallel routes should match parallel routes",
+ "name": "SCSS Support Has CSS in computed styles in Production should have CSS for page",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should match parallel routes in route groups",
+ "name": "SCSS Support Has CSS in computed styles in Development should have CSS for page",
"status": "passed"
- },
+ }
+ ]
+ },
+ {
+ "name": "SCSS Support",
+ "file": "test/e2e/app-dir/scss/webpack-error/webpack-error.test.ts",
+ "passed": 0,
+ "failed": 0,
+ "skipped": 0,
+ "total": "1",
+ "testCases": []
+ },
+ {
+ "name": "searchparams-static-bailout",
+ "file": "test/e2e/app-dir/searchparams-static-bailout/searchparams-static-bailout.test.ts",
+ "passed": 5,
+ "failed": 0,
+ "skipped": 0,
+ "total": "5",
+ "testCases": [
{
- "name": "parallel-routes-and-interception parallel routes should throw a 404 when no matching parallel route is found",
- "status": "failed"
+ "name": "searchparams-static-bailout server component should bailout when using searchParams",
+ "status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should render nested parallel routes",
+ "name": "searchparams-static-bailout server component should not bailout when not using searchParams",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should support layout files in parallel routes",
+ "name": "searchparams-static-bailout client component should bailout when using searchParams",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should only scroll to the parallel route that was navigated to",
- "status": "failed"
+ "name": "searchparams-static-bailout client component should bailout when using searchParams is passed to client component",
+ "status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should apply the catch-all route to the parallel route if no matching route is found",
+ "name": "searchparams-static-bailout client component should not bailout when not using searchParams",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "useSelectedLayoutSegment(s)",
+ "file": "test/e2e/app-dir/use-selected-layout-segment-s/use-selected-layout-segment-s.test.ts",
+ "passed": 8,
+ "failed": 0,
+ "skipped": 0,
+ "total": "8",
+ "testCases": [
+ {
+ "name": "useSelectedLayoutSegment(s) should return correct values for root layout",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should match the catch-all routes of the more specific path, if there is more than one catch-all route",
+ "name": "useSelectedLayoutSegment(s) should return correct values in layout before static segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should navigate with a link with prefetch=false",
+ "name": "useSelectedLayoutSegment(s) should return correct values in layout before param segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should display all parallel route params with useParams",
+ "name": "useSelectedLayoutSegment(s) should return correct values in layout before catchall segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should load CSS for a default page that exports another page",
+ "name": "useSelectedLayoutSegment(s) should return correct values in layout after last segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should handle a loading state",
+ "name": "useSelectedLayoutSegment(s) should correctly update when changing static segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting with dynamic routes should render intercepted route",
+ "name": "useSelectedLayoutSegment(s) should correctly update when changing param segment",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting with dynamic optional catch-all routes should render intercepted route",
+ "name": "useSelectedLayoutSegment(s) should correctly update when changing catchall segment",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "Edge API endpoints can receive body",
+ "file": "test/e2e/edge-api-endpoints-can-receive-body/index.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
+ {
+ "name": "Edge API endpoints can receive body reads the body as text",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting with dynamic catch-all routes should render intercepted route",
+ "name": "Edge API endpoints can receive body reads the body from index",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "i18-default-locale-redirect",
+ "file": "test/e2e/i18n-default-locale-redirect/i18n-default-locale-redirect.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
+ {
+ "name": "i18-default-locale-redirect should not request a path prefixed with default locale",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should render intercepted route",
+ "name": "i18-default-locale-redirect should request a path prefixed with non-default locale",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "Event with stale state - static route previously was dynamic",
+ "file": "test/e2e/ignore-invalid-popstateevent/without-i18n.test.ts",
+ "passed": 2,
+ "failed": 0,
+ "skipped": 0,
+ "total": "2",
+ "testCases": [
+ {
+ "name": "Event with stale state - static route previously was dynamic Ignore event without query param",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should render an intercepted route from a slot",
+ "name": "Event with stale state - static route previously was dynamic Ignore event with query param",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "Middleware can set the matcher in its config",
+ "file": "test/e2e/middleware-matcher/index.test.ts",
+ "passed": 33,
+ "failed": 2,
+ "skipped": 0,
+ "total": "35",
+ "testCases": [
+ {
+ "name": "Middleware can set the matcher in its config does add the header for root request",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should render an intercepted route at the top level from a nested path",
+ "name": "Middleware can set the matcher in its config adds the header for a matched path",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should render intercepted route from a nested route",
+ "name": "Middleware can set the matcher in its config adds the header for a matched data path (with header)",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should re-render the layout on the server when it had a default child route",
+ "name": "Middleware can set the matcher in its config adds the header for a matched data path (without header)",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should render modal when paired with parallel routes",
+ "name": "Middleware can set the matcher in its config adds the header for another matched path",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should support intercepting with beforeFiles rewrites",
+ "name": "Middleware can set the matcher in its config adds the header for another matched data path",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception route intercepting should support intercepting local dynamic sibling routes",
+ "name": "Middleware can set the matcher in its config does add the header for root data request",
"status": "passed"
},
{
- "name": "parallel-routes-and-interception parallel routes should gracefully handle when two page segments match the `children` parallel slot",
- "status": "skipped",
- "reason": "Tries to patch deployed files"
- }
- ]
- },
- {
- "name": "prefetching-not-found",
- "file": "test/e2e/app-dir/prefetching-not-found/prefetching-not-found.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ "name": "Middleware can set the matcher in its config should load matches in client matchers correctly",
+ "status": "passed"
+ },
{
- "name": "prefetching-not-found should correctly navigate to/from a global 404 page when following links with prefetch=auto",
+ "name": "Middleware can set the matcher in its config should navigate correctly with matchers",
"status": "passed"
- }
- ]
- },
- {
- "name": "app-dir revalidate-dynamic",
- "file": "test/e2e/app-dir/revalidate-dynamic/revalidate-dynamic.test.ts",
- "passed": 0,
- "failed": 2,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "app-dir revalidate-dynamic should revalidate the data with /api/revalidate-path",
- "status": "failed"
+ "name": "using a single matcher does not add the header for root request",
+ "status": "passed"
},
{
- "name": "app-dir revalidate-dynamic should revalidate the data with /api/revalidate-tag",
- "status": "failed"
- }
- ]
- },
- {
- "name": "app-dir root layout render once",
- "file": "test/e2e/app-dir/root-layout-render-once/index.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ "name": "using a single matcher does not add the header for root data request",
+ "status": "passed"
+ },
{
- "name": "app-dir root layout render once should skip next deploy",
+ "name": "using a single matcher adds the header for a matched path",
"status": "passed"
- }
- ]
- },
- {
- "name": "router autoscrolling on navigation",
- "file": "test/e2e/app-dir/router-autoscroll/router-autoscroll.test.ts",
- "passed": 13,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "router autoscrolling on navigation vertical scroll should scroll to top of document when navigating between to pages without layout",
+ "name": "using a single matcher adds the headers for a matched data path (with header)",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation vertical scroll should scroll to top of page when scrolling to phe top of the document wouldn't have the page in the viewport",
+ "name": "using a single matcher adds the header for a matched data path (without header)",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation vertical scroll should scroll down to the navigated page when it's below viewort",
+ "name": "using a single matcher does not add the header for an unmatched path",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation vertical scroll should not scroll when the top of the page is in the viewport",
+ "name": "using root matcher adds the header to the /",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation vertical scroll should not scroll to top of document if page in viewport",
+ "name": "using root matcher adds the header to the /index",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation vertical scroll should scroll to top of document if possible while giving focus to page",
+ "name": "using root matcher adds the header for a matched data path (with header)",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation horizontal scroll should't scroll horizontally",
+ "name": "using root matcher adds the header for a matched data path (without header)",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation router.refresh() should not scroll when called alone",
+ "name": "using a single matcher with i18n adds the header for a matched path",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation router.refresh() should not stop router.push() from scrolling",
+ "name": "using a single matcher with i18n adds the header for a mathed root path with /index",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation bugs Should scroll to the top of the layout when the first child is display none",
+ "name": "using a single matcher with i18n adds the headers for a matched data path",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation bugs Should scroll to the top of the layout when the first child is position fixed",
+ "name": "using a single matcher with i18n does not add the header for an unmatched path",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation bugs Should scroll to the top of the layout when the first child is position sticky",
+ "name": "using a single matcher with i18n and trailingSlash adds the header for a matched path",
"status": "passed"
},
{
- "name": "router autoscrolling on navigation bugs Should apply scroll when loading.js is used",
+ "name": "using a single matcher with i18n and trailingSlash adds the header for a mathed root path with /index",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and trailingSlash adds the headers for a matched data path",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and trailingSlash does not add the header for an unmatched path",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath adds the header for a matched path",
+ "status": "failed",
+ "reason": "Middleware does not match when using basePath and default locale",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/454"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath adds the header for a mathed root path with /index",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath adds the headers for a matched data path",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath does not add the header for an unmatched path",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath and trailingSlash adds the header for a matched path",
+ "status": "failed",
+ "reason": "Middleware does not match when using basePath and default locale",
+ "link": "https://github.com/netlify/next-runtime-minimal/issues/454"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath and trailingSlash adds the header for a mathed root path with /index",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath and trailingSlash adds the headers for a matched data path",
+ "status": "passed"
+ },
+ {
+ "name": "using a single matcher with i18n and basePath and trailingSlash does not add the header for an unmatched path",
"status": "passed"
}
]
},
{
- "name": "Basic SCSS Module Support",
- "file": "test/e2e/app-dir/scss/basic-module/basic-module.test.ts",
+ "name": "postcss-config-cjs",
+ "file": "test/e2e/postcss-config-cjs/index.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "Basic SCSS Module Support should render the module",
+ "name": "postcss-config-cjs works with postcss.config.cjs files",
"status": "passed"
}
]
},
{
- "name": "SCSS Support",
- "file": "test/e2e/app-dir/scss/compilation-and-prefixing/compilation-and-prefixing.test.ts",
- "passed": 2,
+ "name": "undici fetch",
+ "file": "test/e2e/undici-fetch/index.test.ts",
+ "passed": 4,
"failed": 0,
"skipped": 0,
+ "total": "4",
"testCases": [
{
- "name": "SCSS Support Production only CSS Compilation and Prefixing should've compiled and prefixed",
+ "name": "undici fetch undici global fetch should return true when undici is used",
"status": "passed"
},
{
- "name": "SCSS Support Production only CSS Compilation and Prefixing should've emitted a source map",
+ "name": "undici fetch undici global Headers should return true when undici is used",
+ "status": "passed"
+ },
+ {
+ "name": "undici fetch undici global Request should return true when undici is used",
+ "status": "passed"
+ },
+ {
+ "name": "undici fetch undici global Response should return true when undici is used",
"status": "passed"
}
]
},
{
- "name": "CSS Module Composes Usage (Basic)",
- "file": "test/e2e/app-dir/scss/composes-basic/composes-basic.test.ts",
+ "name": "app-dir action allowed origins",
+ "file": "test/e2e/app-dir/actions-allowed-origins/app-action-allowed-origins.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "CSS Module Composes Usage (Basic) should render the module",
+ "name": "app-dir action allowed origins should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "SCSS Support loader handling Data Urls",
- "file": "test/e2e/app-dir/scss/data-url/data-url.test.ts",
+ "name": "app dir - crossOrigin config",
+ "file": "test/e2e/app-dir/app-config-crossorigin/index.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "SCSS Support loader handling Data Urls should render the module",
+ "name": "app dir - crossOrigin config should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "Can hot reload CSS Module without losing state",
- "file": "test/e2e/app-dir/scss/hmr-module/hmr-module.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "Invalid CSS Global Module Usage in node_modules",
- "file": "test/e2e/app-dir/scss/invalid-global-module/invalid-global-module.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "Invalid Global CSS with Custom App",
- "file": "test/e2e/app-dir/scss/invalid-global-with-app/invalid-global-with-app.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "Invalid Global CSS",
- "file": "test/e2e/app-dir/scss/invalid-global/invalid-global.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "Invalid SCSS in _document",
- "file": "test/e2e/app-dir/scss/invalid-module-document/invalid-module-document.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "Invalid CSS Module Usage in node_modules",
- "file": "test/e2e/app-dir/scss/invalid-module/invalid-module.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "SCSS Support loader handling Preprocessor loader order",
- "file": "test/e2e/app-dir/scss/loader-order/loader-order.test.ts",
+ "name": "app dir rendering",
+ "file": "test/e2e/app-dir/app-rendering/rendering.test.ts",
"passed": 1,
"failed": 0,
"skipped": 0,
+ "total": "1",
"testCases": [
{
- "name": "SCSS Support loader handling Preprocessor loader order should render the module",
+ "name": "app dir rendering should skip next deploy",
"status": "passed"
}
]
},
{
- "name": "Nested @import() Global Support",
- "file": "test/e2e/app-dir/scss/nested-global/nested-global.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
+ "name": "app dir - basic",
+ "file": "test/e2e/app-dir/app/index.test.ts",
+ "passed": 90,
+ "failed": 2,
+ "skipped": 2,
+ "total": "100",
"testCases": [
{
- "name": "Nested @import() Global Support should render the page",
+ "name": "app dir - basic should work for catch-all edge page",
"status": "passed"
- }
- ]
- },
- {
- "name": "Good CSS Import from node_modules with tilde",
- "file": "test/e2e/app-dir/scss/npm-import-tilde/npm-import-tilde.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "Good CSS Import from node_modules with tilde should render the page",
+ "name": "app dir - basic should return normalized dynamic route params for catch-all edge page",
"status": "passed"
- }
- ]
- },
- {
- "name": "Basic Global Support with src/ dir",
- "file": "test/e2e/app-dir/scss/single-global-src/single-global-src.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "Basic Global Support with src/ dir should render the page",
+ "name": "app dir - basic should have correct searchParams and params (server)",
"status": "passed"
- }
- ]
- },
- {
- "name": "SCSS Support loader handling",
- "file": "test/e2e/app-dir/scss/url-global-asset-prefix-1/url-global-asset-prefix-1.test.ts",
- "passed": 0,
- "failed": 0,
- "skipped": 0,
- "testCases": []
- },
- {
- "name": "SCSS Support loader handling",
- "file": "test/e2e/app-dir/scss/url-global-partial/url-global-partial.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "SCSS Support loader handling CSS URL via file-loader sass partial should render the page",
+ "name": "app dir - basic should have correct searchParams and params (client)",
"status": "passed"
- }
- ]
- },
- {
- "name": "searchparams-static-bailout",
- "file": "test/e2e/app-dir/searchparams-static-bailout/searchparams-static-bailout.test.ts",
- "passed": 5,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "searchparams-static-bailout server component should bailout when using searchParams",
+ "name": "app dir - basic should successfully detect app route during prefetch",
"status": "passed"
},
{
- "name": "searchparams-static-bailout server component should not bailout when not using searchParams",
+ "name": "app dir - basic should encode chunk path correctly",
"status": "passed"
},
{
- "name": "searchparams-static-bailout client component should bailout when using searchParams",
+ "name": "app dir - basic should match redirects in pages correctly $path",
"status": "passed"
},
{
- "name": "searchparams-static-bailout client component should bailout when using searchParams is passed to client component",
+ "name": "app dir - basic should match redirects in pages correctly $path",
"status": "passed"
},
{
- "name": "searchparams-static-bailout client component should not bailout when not using searchParams",
+ "name": "app dir - basic should match redirects in pages correctly $path",
"status": "passed"
- }
- ]
- },
- {
- "name": "app-dir similar pages paths",
- "file": "test/e2e/app-dir/similar-pages-paths/similar-pages-paths.test.ts",
- "passed": 1,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "app-dir similar pages paths should skip next deploy",
+ "name": "app dir - basic should match redirects in pages correctly $path",
"status": "passed"
- }
- ]
- },
- {
- "name": "app-dir static-generation-status",
- "file": "test/e2e/app-dir/static-generation-status/index.test.ts",
- "passed": 3,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "app-dir static-generation-status should render the page using notFound with status 404",
+ "name": "app dir - basic should match redirects in pages correctly $path",
"status": "passed"
},
{
- "name": "app-dir static-generation-status should render the page using redirect with status 307",
+ "name": "app dir - basic should not apply client router filter on shallow",
"status": "passed"
},
{
- "name": "app-dir static-generation-status should render the non existed route redirect with status 404",
+ "name": "app dir - basic should use text/x-component for flight",
"status": "passed"
- }
- ]
- },
- {
- "name": "{{name}}",
- "file": "test/e2e/app-dir/test-template/{{ toFileName name }}/{{ toFileName name }}.test.ts",
- "passed": 4,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "{{name}} should work using cheerio",
+ "name": "app dir - basic should use text/x-component for flight with edge runtime",
"status": "passed"
},
{
- "name": "{{name}} should work using browser",
+ "name": "app dir - basic should pass props from getServerSideProps in root layout",
"status": "passed"
},
{
- "name": "{{name}} should work with html",
+ "name": "app dir - basic should serve from pages",
"status": "passed"
},
{
- "name": "{{name}} should work with fetch",
+ "name": "app dir - basic should serve dynamic route from pages",
"status": "passed"
- }
- ]
- },
- {
- "name": "useSelectedLayoutSegment(s)",
- "file": "test/e2e/app-dir/use-selected-layout-segment-s/use-selected-layout-segment-s.test.ts",
- "passed": 8,
- "failed": 0,
- "skipped": 0,
- "testCases": [
+ },
{
- "name": "useSelectedLayoutSegment(s) should return correct values for root layout",
+ "name": "app dir - basic should serve from public",
"status": "passed"
},
{
- "name": "useSelectedLayoutSegment(s) should return correct values in layout before static segment",
+ "name": "app dir - basic should serve from app",
"status": "passed"
},
{
- "name": "useSelectedLayoutSegment(s) should return correct values in layout before param segment",
+ "name": "app dir - basic should ensure the