Skip to content

Commit 0f804b4

Browse files
committed
test(nuxt): Upgrade to Nuxt 4.6 ; Test imports from nuxt/server
1 parent 24b945d commit 0f804b4

17 files changed

Lines changed: 394 additions & 303 deletions

File tree

‎dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-routes.vue‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,19 @@
77
</template>
88

99
<script setup lang="ts">
10-
import { useFetch } from '#imports';
10+
import { useFetch, useRoute } from '#imports';
11+
12+
const apiPrefix = useRoute().query.apiPrefix ?? '/api';
1113
1214
const fetchError = async () => {
13-
await useFetch('/api/server-error');
15+
await useFetch(`${apiPrefix}/server-error`);
1416
};
1517
1618
const fetchNitroFetch = async () => {
17-
await useFetch('/api/nitro-fetch');
19+
await useFetch(`${apiPrefix}/nitro-fetch`);
1820
};
1921
2022
const fetchThirdPartyHttpError = async () => {
21-
await useFetch('/api/third-party-http-error');
23+
await useFetch(`${apiPrefix}/third-party-http-error`);
2224
};
2325
</script>

‎dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/test-param/[param].vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { useRoute, useFetch } from '#imports';
33
44
const route = useRoute();
55
const param = route.params.param;
6+
const apiPrefix = route.query.apiPrefix ?? '/api';
67
78
const fetchError = async () => {
8-
await useFetch(`/api/param-error/${param}`);
9+
await useFetch(`${apiPrefix}/param-error/${param}`);
910
};
1011
1112
const fetchData = async () => {

‎dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/test-param/user/[userId].vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import { useFetch, useRoute } from '#imports';
33
44
const route = useRoute();
55
const userId = route.params.userId as string;
6+
const apiPrefix = route.query.apiPrefix ?? '/api';
67
7-
const { data } = await useFetch(`/api/user/${userId}`, {
8+
const { data } = await useFetch(`${apiPrefix}/user/${userId}`, {
89
server: false, // Don't fetch during SSR, only client-side
910
});
1011
</script>

‎dev-packages/e2e-tests/test-applications/nuxt-4/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"ioredis": "5.10.1",
2626
"mongoose": "^9.10.2",
2727
"mysql": "^2.18.1",
28-
"nuxt": "^4.1.2"
28+
"nuxt": "^4.6.0"
2929
},
3030
"devDependencies": {
3131
"@playwright/test": "~1.63.0",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(event => {
4+
return {
5+
message: 'Server middleware test endpoint',
6+
path: event.url.pathname,
7+
method: event.req.method,
8+
};
9+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
// `$fetch` is a Nitro global, not a `nuxt/server` export, so the portable copy uses `fetch`.
4+
export default defineEventHandler(async () => {
5+
const response = await fetch('https://example.com');
6+
return response.text();
7+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(() => {
4+
throw new Error('Nuxt 4 Param Server error');
5+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(() => {
4+
throw new Error('Nuxt 4 Server error');
5+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
// Mimics ky's and got's `HTTPError`: it shares its `name` with h3's error class, but keeps the
4+
// status on `response` instead of on the error itself.
5+
class ThirdPartyHTTPError extends Error {
6+
public readonly response = { status: 404 };
7+
8+
public constructor(message: string) {
9+
super(message);
10+
this.name = 'HTTPError';
11+
}
12+
}
13+
14+
export default defineEventHandler(() => {
15+
throw new ThirdPartyHTTPError('Nuxt 4 third-party HTTPError');
16+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineEventHandler, getRouterParam } from 'nuxt/server';
2+
3+
export default defineEventHandler(event => {
4+
const userId = getRouterParam(event, 'userId');
5+
6+
return `UserId Param: ${userId}!`;
7+
});

0 commit comments

Comments
 (0)