diff --git a/packages/kit/test/apps/basics/src/routes/load/+page.svelte b/packages/kit/test/apps/basics/src/routes/load/+page.svelte
index 1685c738ef3e..278d28f352eb 100644
--- a/packages/kit/test/apps/basics/src/routes/load/+page.svelte
+++ b/packages/kit/test/apps/basics/src/routes/load/+page.svelte
@@ -7,6 +7,7 @@
fetch request
fetch relative
+fetch layout relative
fetch credentialed
fetch headers
large response
diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.js b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.js
new file mode 100644
index 000000000000..6b4d3b247072
--- /dev/null
+++ b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.js
@@ -0,0 +1,5 @@
+/** @type {import('./$types').LayoutLoad} */
+export async function load({ fetch }) {
+ const res = await fetch('./data.json');
+ return await res.json();
+}
diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.svelte b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.svelte
new file mode 100644
index 000000000000..4fa864ce7aa9
--- /dev/null
+++ b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/+layout.svelte
@@ -0,0 +1 @@
+
diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/a/b/c/+page.svelte b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/a/b/c/+page.svelte
new file mode 100644
index 000000000000..c890e7840e38
--- /dev/null
+++ b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/a/b/c/+page.svelte
@@ -0,0 +1,6 @@
+
+
+
the answer is {data.answer}
diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/data.json/+server.js b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/data.json/+server.js
new file mode 100644
index 000000000000..8cc433e6ef8b
--- /dev/null
+++ b/packages/kit/test/apps/basics/src/routes/load/fetch-layout-relative/data.json/+server.js
@@ -0,0 +1,6 @@
+import { json } from '@sveltejs/kit';
+
+/** @type {import('./$types').RequestHandler} */
+export function GET() {
+ return json({ answer: 42 });
+}
diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js
index d46e73f175ce..ecda76a0be0e 100644
--- a/packages/kit/test/apps/basics/test/test.js
+++ b/packages/kit/test/apps/basics/test/test.js
@@ -761,6 +761,12 @@ test.describe('Load', () => {
expect(await page.textContent('h2')).toBe('the question was ?');
});
+ test('fetch resolves relative to layout', async ({ page, clicknav }) => {
+ await page.goto('/load');
+ await clicknav('[href="/load/fetch-layout-relative/a/b/c"]');
+ expect(await page.textContent('h1')).toBe('the answer is 42');
+ });
+
test('handles large responses', async ({ page }) => {
await page.goto('/load');