diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/+layout.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/+layout.svelte
new file mode 100644
index 000000000000..9cec52bfc6b4
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/+layout.svelte
@@ -0,0 +1,16 @@
+
+
+ROOT resolve-route
+
+
+{JSON.stringify({ ['page.route.id']: page.route.id, params: page.params }, null, 2)}
+
+{@render children()}
+
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/+page.svelte
index 012be59f5a26..d8c2126fac57 100644
--- a/packages/kit/test/apps/options/source/pages/resolve-route/+page.svelte
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/+page.svelte
@@ -1,7 +1,147 @@
+
+
+
+
-click me
+
+
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/a/[...rest]/z/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/a/[...rest]/z/+page.svelte
new file mode 100644
index 000000000000..8e65a824f1c0
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/a/[...rest]/z/+page.svelte
@@ -0,0 +1 @@
+[...rest] page
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/api/graphql/+server.js b/packages/kit/test/apps/options/source/pages/resolve-route/api/graphql/+server.js
new file mode 100644
index 000000000000..33c679ce510e
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/api/graphql/+server.js
@@ -0,0 +1,7 @@
+import { json } from '@sveltejs/kit';
+
+const allMethod = async () => {
+ return json({ my: 'Graphql server 🎉' });
+};
+
+export { allMethod as GET, allMethod as POST };
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/gp/(gpA)/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/gp/(gpA)/+page.svelte
new file mode 100644
index 000000000000..ecb8e4704f69
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/gp/(gpA)/+page.svelte
@@ -0,0 +1 @@
+gpA
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/i/[n]/[terpolation]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/i/[n]/[terpolation]/+page.svelte
new file mode 100644
index 000000000000..b7245a514475
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/i/[n]/[terpolation]/+page.svelte
@@ -0,0 +1 @@
+Plop
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/matched/[fallback]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[fallback]/+page.svelte
new file mode 100644
index 000000000000..eef9eb409e64
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[fallback]/+page.svelte
@@ -0,0 +1,5 @@
+
+
+fallback: {page.params.fallback}
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/matched/[id=ab]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[id=ab]/+page.svelte
new file mode 100644
index 000000000000..5aa6b1f7d5c2
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[id=ab]/+page.svelte
@@ -0,0 +1,5 @@
+
+
+ab: {page.params.id}
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/matched/[letter=lowercase]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[letter=lowercase]/+page.svelte
new file mode 100644
index 000000000000..92542e4d1127
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[letter=lowercase]/+page.svelte
@@ -0,0 +1,5 @@
+
+
+lowercase: {page.params.letter}
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/matched/[number=numeric]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[number=numeric]/+page.svelte
new file mode 100644
index 000000000000..86cdb955a6e6
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/matched/[number=numeric]/+page.svelte
@@ -0,0 +1,5 @@
+
+
+number: {page.params.number}
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/optional-params/[[lang]]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/optional-params/[[lang]]/+page.svelte
new file mode 100644
index 000000000000..3e657df5336d
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/optional-params/[[lang]]/+page.svelte
@@ -0,0 +1,5 @@
+
+
+{page.params.lang}
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/site/+page.server.ts b/packages/kit/test/apps/options/source/pages/resolve-route/site/+page.server.ts
new file mode 100644
index 000000000000..cd55a8ff7426
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/site/+page.server.ts
@@ -0,0 +1,8 @@
+import type { Actions } from './$types';
+
+export const actions = {
+ create: async () => {
+ // [
+ },
+ 'u-p-d-a-t-e': async () => {}
+} satisfies Actions;
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.server.ts b/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.server.ts
new file mode 100644
index 000000000000..dc30771daf4b
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.server.ts
@@ -0,0 +1,6 @@
+import type { Actions } from '../$types.js';
+
+export const actions = {
+ update: async () => {},
+ delete: async () => {}
+} satisfies Actions;
diff --git a/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.svelte b/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.svelte
new file mode 100644
index 000000000000..dee41692d79c
--- /dev/null
+++ b/packages/kit/test/apps/options/source/pages/resolve-route/site/[id]/+page.svelte
@@ -0,0 +1,7 @@
+
+
+site [id]
+
+id: {page.params.id}
diff --git a/packages/kit/test/apps/options/source/params/ab.ts b/packages/kit/test/apps/options/source/params/ab.ts
new file mode 100644
index 000000000000..08a9363075b5
--- /dev/null
+++ b/packages/kit/test/apps/options/source/params/ab.ts
@@ -0,0 +1,5 @@
+import type { ParamMatcher } from '@sveltejs/kit';
+
+export const match = ((param): param is 'a' | 'b' => {
+ return ['a', 'b'].includes(param);
+}) satisfies ParamMatcher;
diff --git a/packages/kit/test/apps/options/source/params/lowercase.js b/packages/kit/test/apps/options/source/params/lowercase.js
new file mode 100644
index 000000000000..c9dc0695e69e
--- /dev/null
+++ b/packages/kit/test/apps/options/source/params/lowercase.js
@@ -0,0 +1,3 @@
+export function match(param) {
+ return /^[a-z]+$/.test(param);
+}
diff --git a/packages/kit/test/apps/options/source/params/numeric.js b/packages/kit/test/apps/options/source/params/numeric.js
new file mode 100644
index 000000000000..93ea12018d44
--- /dev/null
+++ b/packages/kit/test/apps/options/source/params/numeric.js
@@ -0,0 +1,3 @@
+export function match(param) {
+ return !isNaN(parseInt(param));
+}
diff --git a/packages/kit/test/apps/options/svelte.config.js b/packages/kit/test/apps/options/svelte.config.js
index 3c10a2826669..2f35ed744d91 100644
--- a/packages/kit/test/apps/options/svelte.config.js
+++ b/packages/kit/test/apps/options/svelte.config.js
@@ -12,6 +12,7 @@ const config = {
}
},
files: {
+ params: 'source/params',
assets: 'public',
lib: 'source/components',
routes: 'source/pages',