diff --git a/packages/nuxt/test/server/runtime/plugin.test.ts b/packages/nuxt/test/runtime/plugins/server.test.ts similarity index 100% rename from packages/nuxt/test/server/runtime/plugin.test.ts rename to packages/nuxt/test/runtime/plugins/server.test.ts diff --git a/packages/nuxt/test/client/runtime/utils.test.ts b/packages/nuxt/test/runtime/utils.test.ts similarity index 97% rename from packages/nuxt/test/client/runtime/utils.test.ts rename to packages/nuxt/test/runtime/utils.test.ts index b0b039d52e54..08c66193caa3 100644 --- a/packages/nuxt/test/client/runtime/utils.test.ts +++ b/packages/nuxt/test/runtime/utils.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { extractErrorContext } from '../../../src/runtime/utils'; +import { extractErrorContext } from '../../src/runtime/utils'; describe('extractErrorContext', () => { it('returns empty object for undefined or empty context', () => { diff --git a/packages/nuxt/test/server/sdk.test.ts b/packages/nuxt/test/server/sdk.test.ts index 8d84dc8b15c8..20ec11c33512 100644 --- a/packages/nuxt/test/server/sdk.test.ts +++ b/packages/nuxt/test/server/sdk.test.ts @@ -1,4 +1,5 @@ import * as SentryNode from '@sentry/node'; +import type { NodeClient } from '@sentry/node'; import { SDK_VERSION } from '@sentry/node'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { init } from '../../src/server'; @@ -38,5 +39,47 @@ describe('Nuxt Server SDK', () => { it('returns client from init', () => { expect(init({})).not.toBeUndefined(); }); + + it('filters out low quality transactions', async () => { + const beforeSendEvent = vi.fn(event => event); + const client = init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + }) as NodeClient; + client.on('beforeSendEvent', beforeSendEvent); + + client.captureEvent({ type: 'transaction', transaction: 'GET /' }); + client.captureEvent({ type: 'transaction', transaction: 'GET /_nuxt/some_asset.js' }); + // Although this has the name of the build asset directory (_nuxt), it should not be filtered out as it would not match the regex + client.captureEvent({ type: 'transaction', transaction: 'GET _nuxt/some_asset.js' }); + client.captureEvent({ type: 'transaction', transaction: 'POST /_server' }); + + await client!.flush(); + + expect(beforeSendEvent).toHaveBeenCalledTimes(3); + expect(beforeSendEvent).toHaveBeenCalledWith( + expect.objectContaining({ + transaction: 'GET /', + }), + expect.any(Object), + ); + expect(beforeSendEvent).toHaveBeenCalledWith( + expect.objectContaining({ + transaction: 'GET _nuxt/some_asset.js', + }), + expect.any(Object), + ); + expect(beforeSendEvent).not.toHaveBeenCalledWith( + expect.objectContaining({ + transaction: 'GET /_nuxt/some_asset.js', + }), + expect.any(Object), + ); + expect(beforeSendEvent).toHaveBeenCalledWith( + expect.objectContaining({ + transaction: 'POST /_server', + }), + expect.any(Object), + ); + }); }); });