diff --git a/demos/default/pages/edge/[id].js b/demos/default/pages/edge/[id].js
new file mode 100644
index 0000000000..ac9566d239
--- /dev/null
+++ b/demos/default/pages/edge/[id].js
@@ -0,0 +1,23 @@
+export const config = {
+ runtime: 'experimental-edge',
+}
+
+export default function Page(props) {
+ return (
+ <>
+
/edge/[id]
+ {JSON.stringify(props)}
+ >
+ )
+}
+
+export function getServerSideProps({ req, params, query }) {
+ return {
+ props: {
+ url: req.url,
+ query,
+ params,
+ now: Date.now(),
+ },
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 599636b77a..ee5b5fd57d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5609,13 +5609,13 @@
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "devOptional": true
+ "dev": true
},
"node_modules/@types/react": {
"version": "18.0.27",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz",
"integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -5641,7 +5641,7 @@
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
"integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "devOptional": true
+ "dev": true
},
"node_modules/@types/semver": {
"version": "7.3.13",
@@ -9423,7 +9423,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "devOptional": true
+ "dev": true
},
"node_modules/custom-routes": {
"resolved": "demos/custom-routes",
@@ -13782,7 +13782,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
"integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
- "devOptional": true
+ "dev": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -21482,7 +21482,7 @@
"version": "1.56.2",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz",
"integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -24555,7 +24555,7 @@
},
"packages/runtime": {
"name": "@netlify/plugin-nextjs",
- "version": "4.30.1",
+ "version": "4.30.2",
"license": "MIT",
"dependencies": {
"@netlify/esbuild": "0.14.39",
@@ -28517,13 +28517,13 @@
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "devOptional": true
+ "dev": true
},
"@types/react": {
"version": "18.0.27",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz",
"integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==",
- "devOptional": true,
+ "dev": true,
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -28549,7 +28549,7 @@
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
"integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "devOptional": true
+ "dev": true
},
"@types/semver": {
"version": "7.3.13",
@@ -28864,8 +28864,7 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"acorn-walk": {
"version": "7.2.0",
@@ -28922,8 +28921,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
"integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"ansi-align": {
"version": "3.0.1",
@@ -30911,8 +30909,7 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz",
"integrity": "sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"cp-file": {
"version": "10.0.0",
@@ -31435,7 +31432,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "devOptional": true
+ "dev": true
},
"custom-routes": {
"version": "file:demos/custom-routes",
@@ -32598,15 +32595,13 @@
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-config-standard": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz",
"integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-formatter-codeframe": {
"version": "7.32.1",
@@ -33052,8 +33047,7 @@
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-plugin-react": {
"version": "7.31.10",
@@ -33111,8 +33105,7 @@
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-plugin-unicorn": {
"version": "43.0.2",
@@ -34731,7 +34724,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
"integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
- "devOptional": true
+ "dev": true
},
"import-fresh": {
"version": "3.3.0",
@@ -35902,8 +35895,7 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"jest-regex-util": {
"version": "27.5.1",
@@ -40503,7 +40495,7 @@
"version": "1.56.2",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz",
"integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==",
- "devOptional": true,
+ "dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -42225,8 +42217,7 @@
"ws": {
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
- "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
- "requires": {}
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg=="
}
}
},
@@ -42731,8 +42722,7 @@
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"xdg-basedir": {
"version": "4.0.0",
diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts
index ea491bc353..65b8441c37 100644
--- a/packages/runtime/src/helpers/edge.ts
+++ b/packages/runtime/src/helpers/edge.ts
@@ -153,6 +153,8 @@ const getMiddlewareBundle = async ({
const { publish } = netlifyConfig.build
const chunks: Array = [preamble]
+ chunks.push(`export const _DEFINITION = ${JSON.stringify(edgeFunctionDefinition)}`)
+
if ('wasm' in edgeFunctionDefinition) {
for (const { name, filePath } of edgeFunctionDefinition.wasm) {
const wasm = await fs.readFile(join(publish, filePath))
@@ -459,16 +461,22 @@ export const writeEdgeFunctions = async ({
...matchers.map((matcher) => middlewareMatcherToEdgeFunctionDefinition(matcher, functionName)),
)
}
+ // Functions (i.e. not middleware, but edge SSR and API routes)
if (typeof middlewareManifest.functions === 'object') {
// When using the app dir, we also need to check if the EF matches a page
const appPathRoutesManifest = await loadAppPathRoutesManifest(netlifyConfig)
+ // A map of all route pages to their page regex. This is used for pages dir and appDir.
const pageRegexMap = new Map(
[...(routesManifest.dynamicRoutes || []), ...(routesManifest.staticRoutes || [])].map((route) => [
route.page,
route.regex,
]),
)
+ // Create a map of pages-dir routes to their data route regex (appDir uses the same route as the HTML)
+ const dataRoutesMap = new Map(
+ [...(routesManifest.dataRoutes || [])].map((route) => [route.page, route.dataRouteRegex]),
+ )
for (const edgeFunctionDefinition of Object.values(middlewareManifest.functions)) {
usesEdge = true
@@ -491,6 +499,16 @@ export const writeEdgeFunctions = async ({
// cache: "manual" is currently experimental, so we restrict it to sites that use experimental appDir
cache: usesAppDir ? 'manual' : undefined,
})
+ // pages-dir page routes also have a data route. If there's a match, add an entry mapping that to the function too
+ const dataRoute = dataRoutesMap.get(edgeFunctionDefinition.page)
+ if (dataRoute) {
+ manifest.functions.push({
+ function: functionName,
+ name: edgeFunctionDefinition.name,
+ pattern: dataRoute,
+ cache: usesAppDir ? 'manual' : undefined,
+ })
+ }
}
}
if (usesEdge) {
diff --git a/packages/runtime/src/templates/edge/bundle.js b/packages/runtime/src/templates/edge/bundle.js
index 757d42d69f..a5108e00fb 100644
--- a/packages/runtime/src/templates/edge/bundle.js
+++ b/packages/runtime/src/templates/edge/bundle.js
@@ -1,7 +1,8 @@
/**
* This placeholder is replaced with the compiled Next.js bundle at build time
* @param {Object} props
- * @param {import("./runtime.ts").RequestData} props.request
+ * @param {import("./function-runtime.ts").RequestData} props.request
* @returns {Promise}
*/
export default async ({ request }) => {}
+export const _DEFINITION = { env: [], files: [], page: 'placeholder', name: 'pages_placeholder', matchers: [] }
diff --git a/packages/runtime/src/templates/edge/function-runtime.ts b/packages/runtime/src/templates/edge/function-runtime.ts
index 9d8513d904..066e40ba8c 100644
--- a/packages/runtime/src/templates/edge/function-runtime.ts
+++ b/packages/runtime/src/templates/edge/function-runtime.ts
@@ -1,6 +1,6 @@
import type { Context } from 'https://edge.netlify.com'
// Available at build time
-import edgeFunction from './bundle.js'
+import { _DEFINITION as edgeFunctionDefinition, default as edgeFunction } from './bundle.js'
import { buildNextRequest, buildResponse, redirectTrailingSlash } from '../edge-shared/utils.ts'
import nextConfig from '../edge-shared/nextConfig.json' assert { type: 'json' }
@@ -11,6 +11,7 @@ const handler = async (req: Request, context: Context) => {
return redirect
}
const request = buildNextRequest(req, context, nextConfig)
+ request.headers['x-matched-path'] ||= edgeFunctionDefinition.page
try {
const result = await edgeFunction({ request })
return buildResponse({ result, request: req, context })
diff --git a/test/__snapshots__/index.spec.js.snap b/test/__snapshots__/index.spec.js.snap
index 8854f5699a..d02c62092b 100644
--- a/test/__snapshots__/index.spec.js.snap
+++ b/test/__snapshots__/index.spec.js.snap
@@ -28,6 +28,7 @@ Array [
".next/server/pages/api/shows/[...params].js",
".next/server/pages/api/shows/[id].js",
".next/server/pages/deep/import.js",
+ ".next/server/pages/edge/[id].js",
".next/server/pages/getServerSideProps/[id].js",
".next/server/pages/getServerSideProps/all/[[...slug]].js",
".next/server/pages/getServerSideProps/file.js",
@@ -122,6 +123,7 @@ exports.resolvePages = () => {
require.resolve('../../../.next/server/pages/api/shows/[...params].js')
require.resolve('../../../.next/server/pages/api/shows/[id].js')
require.resolve('../../../.next/server/pages/deep/import.js')
+ require.resolve('../../../.next/server/pages/edge/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/all/[[...slug]].js')
require.resolve('../../../.next/server/pages/getServerSideProps/file.js')
@@ -180,6 +182,7 @@ exports.resolvePages = () => {
require.resolve('../../../.next/server/pages/api/shows/[...params].js')
require.resolve('../../../.next/server/pages/api/shows/[id].js')
require.resolve('../../../.next/server/pages/deep/import.js')
+ require.resolve('../../../.next/server/pages/edge/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/all/[[...slug]].js')
require.resolve('../../../.next/server/pages/getServerSideProps/file.js')
@@ -238,6 +241,7 @@ exports.resolvePages = () => {
require.resolve('../../../web/.next/server/pages/api/shows/[...params].js')
require.resolve('../../../web/.next/server/pages/api/shows/[id].js')
require.resolve('../../../web/.next/server/pages/deep/import.js')
+ require.resolve('../../../web/.next/server/pages/edge/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/all/[[...slug]].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/file.js')
@@ -296,6 +300,7 @@ exports.resolvePages = () => {
require.resolve('../../../web/.next/server/pages/api/shows/[...params].js')
require.resolve('../../../web/.next/server/pages/api/shows/[id].js')
require.resolve('../../../web/.next/server/pages/deep/import.js')
+ require.resolve('../../../web/.next/server/pages/edge/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/all/[[...slug]].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/file.js')
@@ -671,6 +676,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/_next/data/build-id/en/edge/:id.json",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/_next/data/build-id/en/env.json",
@@ -911,6 +922,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/_next/data/build-id/es/edge/:id.json",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/_next/data/build-id/es/env.json",
@@ -1109,6 +1126,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/_next/data/build-id/fr/edge/:id.json",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/_next/data/build-id/fr/env.json",
@@ -1443,6 +1466,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/edge/:id",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/env",
@@ -1503,6 +1532,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/es/edge/:id",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/es/env",
@@ -1731,6 +1766,12 @@ Array [
"status": 200,
"to": "/.netlify/functions/___netlify-handler",
},
+ Object {
+ "force": false,
+ "from": "/fr/edge/:id",
+ "status": 200,
+ "to": "/.netlify/functions/___netlify-handler",
+ },
Object {
"force": false,
"from": "/fr/env",
diff --git a/test/e2e/app-dir/app-static.test.ts b/test/e2e/app-dir/app-static.test.ts
index a6dfabcee0..f3467f9d58 100644
--- a/test/e2e/app-dir/app-static.test.ts
+++ b/test/e2e/app-dir/app-static.test.ts
@@ -220,7 +220,7 @@ describe('app-dir static/dynamic handling', () => {
}
})
- usuallySkip('should honor dynamic = "force-static" correctly (lazy)', async () => {
+ it('should honor dynamic = "force-static" correctly (lazy)', async () => {
const res = await fetchViaHTTP(next.url, '/force-static/random')
expect(res.status).toBe(200)
@@ -241,8 +241,7 @@ describe('app-dir static/dynamic handling', () => {
expect(firstTime).toBe($2('#now').text())
}
})
- // NTL Skip
- it.skip('should handle dynamicParams: false correctly', async () => {
+ it('should handle dynamicParams: false correctly', async () => {
const validParams = ['tim', 'seb', 'styfle']
for (const param of validParams) {
@@ -315,8 +314,7 @@ describe('app-dir static/dynamic handling', () => {
expect($('#page').text()).toBe('/blog/[author]/[slug]')
}
})
- // NTL Skip
- it.skip('should navigate to static path correctly', async () => {
+ it('should navigate to static path correctly', async () => {
const browser = await webdriver(next.url, '/blog/tim')
await browser.eval('window.beforeNav = 1')
diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js b/test/e2e/modified-tests/edge-render-getserversideprops/app/next.config.js
similarity index 100%
rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js
rename to test/e2e/modified-tests/edge-render-getserversideprops/app/next.config.js
diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js b/test/e2e/modified-tests/edge-render-getserversideprops/app/pages/[id].js
similarity index 100%
rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js
rename to test/e2e/modified-tests/edge-render-getserversideprops/app/pages/[id].js
diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js b/test/e2e/modified-tests/edge-render-getserversideprops/app/pages/index.js
similarity index 100%
rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js
rename to test/e2e/modified-tests/edge-render-getserversideprops/app/pages/index.js
diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts b/test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts
similarity index 80%
rename from test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts
rename to test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts
index c3ea23aca7..ff41df1c5f 100644
--- a/test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts
+++ b/test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts
@@ -4,6 +4,7 @@ import { fetchViaHTTP, normalizeRegEx, renderViaHTTP } from 'next-test-utils'
import cheerio from 'cheerio'
import { join } from 'path'
import escapeStringRegexp from 'escape-string-regexp'
+const usuallySkip = process.env.RUN_SKIPPED_TESTS ? it : it.skip
describe('edge-render-getserversideprops', () => {
let next: NextInstance
@@ -36,7 +37,7 @@ describe('edge-render-getserversideprops', () => {
expect(props.url).toBe('/123?hello=world')
})
- it('should have correct query/params on rewrite', async () => {
+ usuallySkip('should have correct query/params on rewrite', async () => {
const html = await renderViaHTTP(next.url, '/rewrite-me', {
hello: 'world',
})
@@ -48,7 +49,7 @@ describe('edge-render-getserversideprops', () => {
expect(props.url).toBe('/rewrite-me?hello=world')
})
- it('should have correct query/params on dynamic rewrite', async () => {
+ usuallySkip('should have correct query/params on dynamic rewrite', async () => {
const html = await renderViaHTTP(next.url, '/rewrite-me-dynamic', {
hello: 'world',
})
@@ -61,16 +62,11 @@ describe('edge-render-getserversideprops', () => {
})
it('should respond to _next/data for index correctly', async () => {
- const res = await fetchViaHTTP(
- next.url,
- `/_next/data/${next.buildId}/index.json`,
- undefined,
- {
- headers: {
- 'x-nextjs-data': '1',
- },
- }
- )
+ const res = await fetchViaHTTP(next.url, `/_next/data/${next.buildId}/index.json`, undefined, {
+ headers: {
+ 'x-nextjs-data': '1',
+ },
+ })
expect(res.status).toBe(200)
const { pageProps: props } = await res.json()
expect(props.query).toEqual({})
@@ -86,7 +82,7 @@ describe('edge-render-getserversideprops', () => {
headers: {
'x-nextjs-data': '1',
},
- }
+ },
)
expect(res.status).toBe(200)
const { pageProps: props } = await res.json()
@@ -96,9 +92,7 @@ describe('edge-render-getserversideprops', () => {
if ((global as any).isNextStart) {
it('should have data routes in routes-manifest', async () => {
- const manifest = JSON.parse(
- await next.readFile('.next/routes-manifest.json')
- )
+ const manifest = JSON.parse(await next.readFile('.next/routes-manifest.json'))
for (const route of manifest.dataRoutes) {
route.dataRouteRegex = normalizeRegEx(route.dataRouteRegex)
@@ -106,18 +100,12 @@ describe('edge-render-getserversideprops', () => {
expect(manifest.dataRoutes).toEqual([
{
- dataRouteRegex: normalizeRegEx(
- `^/_next/data/${escapeStringRegexp(next.buildId)}/index.json$`
- ),
+ dataRouteRegex: normalizeRegEx(`^/_next/data/${escapeStringRegexp(next.buildId)}/index.json$`),
page: '/',
},
{
- dataRouteRegex: normalizeRegEx(
- `^/_next/data/${escapeStringRegexp(next.buildId)}/([^/]+?)\\.json$`
- ),
- namedDataRouteRegex: `^/_next/data/${escapeStringRegexp(
- next.buildId
- )}/(?[^/]+?)\\.json$`,
+ dataRouteRegex: normalizeRegEx(`^/_next/data/${escapeStringRegexp(next.buildId)}/([^/]+?)\\.json$`),
+ namedDataRouteRegex: `^/_next/data/${escapeStringRegexp(next.buildId)}/(?[^/]+?)\\.json$`,
page: '/[id]',
routeKeys: {
id: 'id',
diff --git a/test/e2e/next-test-lib/next-test-utils.js b/test/e2e/next-test-lib/next-test-utils.js
index d9a63b3595..f8632fd020 100644
--- a/test/e2e/next-test-lib/next-test-utils.js
+++ b/test/e2e/next-test-lib/next-test-utils.js
@@ -128,7 +128,9 @@ export function renderViaHTTP(appPort, pathname, query, opts) {
export async function fetchViaHTTP(appPort, pathname, query = undefined, opts = undefined, useUndici = false) {
const url = `${pathname}${typeof query === 'string' ? query : query ? `?${qs.stringify(query)}` : ''}`
const fetch = useUndici ? undiciFetch : nodeFetch
- return fetch(getFullUrl(appPort, url), opts)
+ const fullUrl = getFullUrl(appPort, url)
+ console.log(`Fetching url: ${fullUrl}`)
+ return fetch(fullUrl, opts)
}
export function runNextCommand(argv, options = {}) {