From f5ca8fc1d0553723b9fc8ff8c05da37570673c1e Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Fri, 19 Sep 2025 16:29:17 +0200 Subject: [PATCH 1/3] test(nuxt): Update Nuxt version and add Nitro $fetch test --- .../test-applications/nuxt-4/app/app.vue | 20 ---------------- ...rver-error.vue => fetch-server-routes.vue} | 5 ++++ .../nuxt-4/app/pages/index.vue | 19 ++++++++++++++- .../nuxt-4/server/api/nitro-fetch.ts | 7 ++++++ .../nuxt-4/tests/errors.server.test.ts | 2 +- .../nuxt-4/tests/tracing.server.test.ts | 24 ++++++++++++++++++- 6 files changed, 54 insertions(+), 23 deletions(-) delete mode 100644 dev-packages/e2e-tests/test-applications/nuxt-4/app/app.vue rename dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/{fetch-server-error.vue => fetch-server-routes.vue} (63%) create mode 100644 dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/app/app.vue b/dev-packages/e2e-tests/test-applications/nuxt-4/app/app.vue deleted file mode 100644 index 6550bbe08887..000000000000 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/app/app.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-error.vue b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-routes.vue similarity index 63% rename from dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-error.vue rename to dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-routes.vue index 0e9aeb34b4fc..089d77a2eee9 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-error.vue +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/fetch-server-routes.vue @@ -1,6 +1,7 @@ @@ -10,4 +11,8 @@ import { useFetch } from '#imports'; const fetchError = async () => { await useFetch('/api/server-error'); }; + +const fetchNitroFetch = async () => { + await useFetch('/api/nitro-fetch'); +}; diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/index.vue b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/index.vue index a3741b5111d0..57a583eb43b1 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/index.vue +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/index.vue @@ -1,3 +1,20 @@ + + diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts new file mode 100644 index 000000000000..40a64f9f00c1 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts @@ -0,0 +1,7 @@ +import { defineEventHandler } from '#imports'; + +export default defineEventHandler(async () => { + const data = await $fetch('https://ungh.cc/orgs/unjs/repos'); + + return data; +}); diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.server.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.server.test.ts index 62933f29dd48..e0873c1f496e 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.server.test.ts +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.server.test.ts @@ -7,7 +7,7 @@ test.describe('server-side errors', async () => { return errorEvent?.exception?.values?.[0]?.value === 'Nuxt 4 Server error'; }); - await page.goto(`/fetch-server-error`); + await page.goto(`/fetch-server-routes`); await page.getByText('Fetch Server API Error', { exact: true }).click(); const error = await errorPromise; diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts index b6453b5a11cd..e72cfb7b6dc6 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { waitForTransaction } from '@sentry-internal/test-utils'; +import { waitForError, waitForTransaction } from '@sentry-internal/test-utils'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/nuxt'; test('sends a server action transaction on pageload', async ({ page }) => { @@ -43,3 +43,25 @@ test('does not send transactions for build asset folder "_nuxt"', async ({ page expect(transactionEvent.transaction).toBe('GET /test-param/:param()'); }); + +test('captures server API calls made with Nitro $fetch', async ({ page }) => { + const transactionPromise = waitForTransaction('nuxt-4', async transactionEvent => { + return transactionEvent.transaction === 'GET /api/nitro-fetch'; + }); + + await page.goto(`/fetch-server-routes`); + await page.getByText('Fetch Nitro $fetch', { exact: true }).click(); + + const httpServerFetchSpan = await transactionPromise; + const httpClientSpan = httpServerFetchSpan.spans.find( + span => span.description === 'GET https://ungh.cc/orgs/unjs/repos', + ); + + const error = await transactionPromise; + + expect(httpServerFetchSpan.transaction).toEqual('GET /api/nitro-fetch'); + expect(httpServerFetchSpan.contexts.trace.op).toEqual('http.server'); + + expect(httpClientSpan.parent_span_id).toEqual(httpServerFetchSpan.contexts.trace.span_id); + expect(httpClientSpan.op).toEqual('http.client'); +}); From a3c0aaf10c7c8c5d6d8fd445527aafa6f66df1e8 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Mon, 22 Sep 2025 14:23:22 +0200 Subject: [PATCH 2/3] update nuxt version --- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index a68c4c823738..b16b7ee2b236 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -18,7 +18,7 @@ "dependencies": { "@pinia/nuxt": "^0.5.5", "@sentry/nuxt": "latest || *", - "nuxt": "^4.0.0-alpha.4" + "nuxt": "^4.1.2" }, "devDependencies": { "@playwright/test": "~1.53.2", From f10c64b477dff8e0f0425d6116eb1d6be54c499e Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Mon, 22 Sep 2025 16:48:38 +0200 Subject: [PATCH 3/3] use example.com as external API --- .../test-applications/nuxt-4/server/api/nitro-fetch.ts | 4 +--- .../test-applications/nuxt-4/tests/tracing.server.test.ts | 6 +----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts index 40a64f9f00c1..6864ce6efafc 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/server/api/nitro-fetch.ts @@ -1,7 +1,5 @@ import { defineEventHandler } from '#imports'; export default defineEventHandler(async () => { - const data = await $fetch('https://ungh.cc/orgs/unjs/repos'); - - return data; + return await $fetch('https://example.com'); }); diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts index e72cfb7b6dc6..91ccc021ceda 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/tracing.server.test.ts @@ -53,11 +53,7 @@ test('captures server API calls made with Nitro $fetch', async ({ page }) => { await page.getByText('Fetch Nitro $fetch', { exact: true }).click(); const httpServerFetchSpan = await transactionPromise; - const httpClientSpan = httpServerFetchSpan.spans.find( - span => span.description === 'GET https://ungh.cc/orgs/unjs/repos', - ); - - const error = await transactionPromise; + const httpClientSpan = httpServerFetchSpan.spans.find(span => span.description === 'GET https://example.com/'); expect(httpServerFetchSpan.transaction).toEqual('GET /api/nitro-fetch'); expect(httpServerFetchSpan.contexts.trace.op).toEqual('http.server');