From 692fd37ba6fec71ddab5ef95d8c2ada7cfdc97e2 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 25 Feb 2025 18:47:18 +0100 Subject: [PATCH 1/3] Testing Vitest with Node integration tests --- .../node-integration-tests/jest.config.js | 9 -- .../node-integration-tests/jest.setup.js | 8 - .../node-integration-tests/package.json | 2 +- .../node-integration-tests/suites/anr/test.ts | 85 ++++++----- .../aws-serverless/aws-integration/s3/test.ts | 9 +- .../suites/breadcrumbs/process-thread/test.ts | 8 +- .../suites/child-process/test.ts | 17 ++- .../drop-reasons/before-send/test.ts | 8 +- .../drop-reasons/event-processors/test.ts | 8 +- .../client-reports/periodic-send/test.ts | 8 +- .../contextLines/filename-with-spaces/test.ts | 15 +- .../suites/cron/cron/test.ts | 8 +- .../suites/cron/node-cron/test.ts | 8 +- .../suites/cron/node-schedule/test.ts | 8 +- .../suites/esm/import-in-the-middle/test.ts | 1 + .../suites/esm/modules-integration/test.ts | 5 +- .../suites/esm/warn-esm/test.ts | 1 + .../handle-error-scope-data-loss/test.ts | 19 ++- .../handle-error-tracesSampleRate-0/test.ts | 10 +- .../test.ts | 10 +- .../suites/express-v5/multiple-init/test.ts | 6 +- .../common-infix-parameterized/test.ts | 10 +- .../multiple-routers/common-infix/test.ts | 10 +- .../test.ts | 10 +- .../common-prefix-parameterized/test.ts | 10 +- .../test.ts | 10 +- .../test.ts | 10 +- .../multiple-routers/common-prefix/test.ts | 10 +- .../multiple-routers/complex-router/test.ts | 28 ++-- .../middle-layer-parameterized/test.ts | 10 +- .../suites/express-v5/requestUser/test.ts | 19 ++- .../baggage-header-assign/test.ts | 1 + .../sentry-trace/baggage-header-out/test.ts | 1 + .../test.ts | 1 + .../baggage-other-vendors/test.ts | 1 + .../baggage-transaction-name/test.ts | 1 + .../sentry-trace/trace-header-assign/test.ts | 1 + .../sentry-trace/trace-header-out/test.ts | 1 + .../setupExpressErrorHandler/test.ts | 6 +- .../express-v5/span-isolationScope/test.ts | 10 +- .../suites/express-v5/tracing/test.ts | 39 +++-- .../express-v5/tracing/tracesSampler/test.ts | 11 +- .../express-v5/tracing/updateName/test.ts | 37 +++-- .../express-v5/tracing/withError/test.ts | 10 +- .../suites/express-v5/without-tracing/test.ts | 26 ++-- .../handle-error-scope-data-loss/test.ts | 23 ++- .../handle-error-tracesSampleRate-0/test.ts | 10 +- .../test.ts | 11 +- .../suites/express/multiple-init/test.ts | 7 +- .../common-infix-parameterized/test.ts | 10 +- .../multiple-routers/common-infix/test.ts | 10 +- .../test.ts | 10 +- .../common-prefix-parameterized/test.ts | 10 +- .../test.ts | 10 +- .../test.ts | 10 +- .../multiple-routers/common-prefix/test.ts | 10 +- .../multiple-routers/complex-router/test.ts | 28 ++-- .../middle-layer-parameterized/test.ts | 10 +- .../suites/express/requestUser/test.ts | 19 ++- .../baggage-header-assign/test.ts | 1 + .../sentry-trace/baggage-header-out/test.ts | 1 + .../test.ts | 1 + .../baggage-other-vendors/test.ts | 1 + .../baggage-transaction-name/test.ts | 1 + .../sentry-trace/trace-header-assign/test.ts | 1 + .../sentry-trace/trace-header-out/test.ts | 1 + .../express/setupExpressErrorHandler/test.ts | 7 +- .../express/span-isolationScope/test.ts | 10 +- .../suites/express/tracing/test.ts | 39 +++-- .../express/tracing/tracesSampler/test.ts | 11 +- .../suites/express/tracing/updateName/test.ts | 37 +++-- .../suites/express/tracing/withError/test.ts | 10 +- .../suites/express/without-tracing/test.ts | 26 ++-- .../suites/fs-instrumentation/test.ts | 31 ++-- .../suites/no-code/test.ts | 15 +- .../suites/proxy/test.ts | 8 +- .../suites/public-api/LocalVariables/test.ts | 49 +++--- .../public-api/OnUncaughtException/test.ts | 100 +++++++------ .../addBreadcrumb/empty-obj/test.ts | 8 +- .../multiple_breadcrumbs/test.ts | 8 +- .../addBreadcrumb/simple_breadcrumb/test.ts | 8 +- .../captureException/catched-error/test.ts | 8 +- .../captureException/empty-obj/test.ts | 8 +- .../captureException/simple-error/test.ts | 8 +- .../parameterized_message/test.ts | 8 +- .../captureMessage/simple_message/test.ts | 8 +- .../simple_message_attachStackTrace/test.ts | 8 +- .../captureMessage/with_level/test.ts | 8 +- .../configureScope/clear_scope/test.ts | 8 +- .../configureScope/set_properties/test.ts | 8 +- .../public-api/scopes/initialScopes/test.ts | 8 +- .../public-api/scopes/isolationScope/test.ts | 8 +- .../setContext/multiple-contexts/test.ts | 8 +- .../non-serializable-context/test.ts | 8 +- .../setContext/simple-context/test.ts | 8 +- .../setExtra/multiple-extras/test.ts | 8 +- .../setExtra/non-serializable-extra/test.ts | 8 +- .../public-api/setExtra/simple-extra/test.ts | 8 +- .../setExtras/consecutive-calls/test.ts | 8 +- .../setExtras/multiple-extras/test.ts | 8 +- .../suites/public-api/setMeasurement/test.ts | 8 +- .../public-api/setTag/with-primitives/test.ts | 8 +- .../setTags/with-primitives/test.ts | 8 +- .../public-api/setUser/unset_user/test.ts | 8 +- .../public-api/setUser/update_user/test.ts | 8 +- .../public-api/startSpan/basic-usage/test.ts | 15 +- .../startSpan/parallel-root-spans/test.ts | 8 +- .../test.ts | 8 +- .../startSpan/parallel-spans-in-scope/test.ts | 8 +- .../startSpan/updateName-method/test.ts | 6 +- .../startSpan/updateSpanName-function/test.ts | 8 +- .../startSpan/with-nested-spans/test.ts | 8 +- .../withScope/nested-scopes/test.ts | 8 +- .../crashed-session-aggregate/test.ts | 8 +- .../errored-session-aggregate/test.ts | 8 +- .../sessions/exited-session-aggregate/test.ts | 8 +- .../suites/tracing/ai/test.ts | 5 +- .../suites/tracing/amqplib/test.ts | 10 +- .../suites/tracing/apollo-graphql/test.ts | 15 +- .../suites/tracing/connect/test.ts | 28 ++-- .../suites/tracing/dataloader/test.ts | 10 +- .../tracing/dsc-txn-name-update/test.ts | 29 ++-- .../error-active-span-unsampled/test.ts | 8 +- .../envelope-header/error-active-span/test.ts | 8 +- .../tracing/envelope-header/error/test.ts | 8 +- .../sampleRate-propagation/test.ts | 20 +-- .../envelope-header/transaction-route/test.ts | 8 +- .../envelope-header/transaction-url/test.ts | 8 +- .../envelope-header/transaction/test.ts | 8 +- .../suites/tracing/genericPool/test.ts | 5 +- .../suites/tracing/hapi/test.ts | 46 +++--- .../http-client-spans/fetch-basic/test.ts | 60 ++++---- .../fetch-strip-query/test.ts | 86 +++++------ .../http-client-spans/http-basic/test.ts | 60 ++++---- .../http-strip-query/test.ts | 87 +++++------ .../suites/tracing/httpIntegration/test.ts | 121 ++++++++------- .../suites/tracing/kafkajs/test.ts | 10 +- .../suites/tracing/knex/test.ts | 18 ++- .../suites/tracing/linking/test.ts | 36 +++-- .../suites/tracing/lru-memoizer/test.ts | 8 +- .../suites/tracing/maxSpans/test.ts | 8 +- .../tracing/meta-tags-twp-errors/test.ts | 17 ++- .../suites/tracing/meta-tags-twp/test.ts | 1 + .../suites/tracing/meta-tags/test.ts | 1 + .../suites/tracing/mongodb/test.ts | 5 +- .../suites/tracing/mongoose/test.ts | 5 +- .../suites/tracing/mysql/test.ts | 22 ++- .../suites/tracing/mysql2/test.ts | 10 +- .../suites/tracing/postgres/test.ts | 10 +- .../suites/tracing/prisma-orm-v5/test.ts | 10 +- .../suites/tracing/prisma-orm-v6/test.ts | 10 +- .../suites/tracing/redis-cache/test.ts | 24 +-- .../suites/tracing/redis/test.ts | 10 +- .../requests/fetch-breadcrumbs/test.ts | 139 ++++++++--------- .../fetch-no-tracing-no-spans/test.ts | 42 +++--- .../tracing/requests/fetch-no-tracing/test.ts | 42 +++--- .../fetch-sampled-no-active-span/test.ts | 40 ++--- .../tracing/requests/fetch-unsampled/test.ts | 40 ++--- .../tracing/requests/http-breadcrumbs/test.ts | 139 ++++++++--------- .../tracing/requests/http-no-tracing/test.ts | 140 +++++++++--------- .../tracing/requests/http-sampled-esm/test.ts | 30 ++-- .../http-sampled-no-active-span/test.ts | 40 ++--- .../tracing/requests/http-sampled/test.ts | 26 ++-- .../tracing/requests/http-unsampled/test.ts | 40 ++--- .../tracing/sample-rand-propagation/test.ts | 1 + .../no-tracing-enabled/test.ts | 1 + .../tracesSampleRate-0/test.ts | 1 + .../tracesSampleRate/test.ts | 1 + .../tracesSampler/test.ts | 1 + .../suites/tracing/tedious/test.ts | 10 +- .../tracing/tracePropagationTargets/test.ts | 26 ++-- .../node-integration-tests/tsconfig.test.json | 4 +- .../node-integration-tests/utils/runner.ts | 27 +++- .../node-integration-tests/utils/server.ts | 11 +- .../node-integration-tests/vite.config.ts | 12 ++ 175 files changed, 1720 insertions(+), 1291 deletions(-) delete mode 100644 dev-packages/node-integration-tests/jest.config.js delete mode 100644 dev-packages/node-integration-tests/jest.setup.js create mode 100644 dev-packages/node-integration-tests/vite.config.ts diff --git a/dev-packages/node-integration-tests/jest.config.js b/dev-packages/node-integration-tests/jest.config.js deleted file mode 100644 index 9be635aba9ad..000000000000 --- a/dev-packages/node-integration-tests/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const baseConfig = require('../../jest/jest.config.js'); - -module.exports = { - globalSetup: '/utils/setup-tests.ts', - ...baseConfig, - testMatch: ['**/test.ts'], - setupFilesAfterEnv: ['./jest.setup.js'], - coverageReporters: ['json', 'lcov', 'clover'], -}; diff --git a/dev-packages/node-integration-tests/jest.setup.js b/dev-packages/node-integration-tests/jest.setup.js deleted file mode 100644 index 88492fc5d945..000000000000 --- a/dev-packages/node-integration-tests/jest.setup.js +++ /dev/null @@ -1,8 +0,0 @@ -const { cleanupChildProcesses } = require('./utils/runner'); - -// Default timeout: 15s -jest.setTimeout(15000); - -afterEach(() => { - cleanupChildProcesses(); -}); diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 52d99207f089..e324363367ed 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -21,7 +21,7 @@ "fix": "eslint . --format stylish --fix", "type-check": "tsc", "pretest": "yarn express-v5-install", - "test": "jest --config ./jest.config.js", + "test": "vitest run", "test:no-prisma": "jest --config ./jest.config.js", "test:watch": "yarn test --watch" }, diff --git a/dev-packages/node-integration-tests/suites/anr/test.ts b/dev-packages/node-integration-tests/suites/anr/test.ts index 9a91d4f205c6..ad3647ec3974 100644 --- a/dev-packages/node-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-integration-tests/suites/anr/test.ts @@ -1,4 +1,5 @@ import type { Event } from '@sentry/core'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../utils/runner'; const ANR_EVENT = { @@ -111,18 +112,23 @@ describe('should report ANR when event loop blocked', () => { cleanupChildProcesses(); }); - test('CJS', done => { - createRunner(__dirname, 'basic.js').withMockSentryServer().expect({ event: ANR_EVENT_WITH_DEBUG_META }).start(done); + test('CJS', async () => { + await createRunner(__dirname, 'basic.js') + .withMockSentryServer() + .expect({ event: ANR_EVENT_WITH_DEBUG_META }) + .start() + .completed(); }); - test('ESM', done => { - createRunner(__dirname, 'basic.mjs') + test('ESM', async () => { + await createRunner(__dirname, 'basic.mjs') .withMockSentryServer() .expect({ event: ANR_EVENT_WITH_DEBUG_META }) - .start(done); + .start() + .completed(); }); - test('Custom appRootPath', done => { + test('Custom appRootPath', async () => { const ANR_EVENT_WITH_SPECIFIC_DEBUG_META: Event = { ...ANR_EVENT_WITH_SCOPE, debug_meta: { @@ -136,52 +142,57 @@ describe('should report ANR when event loop blocked', () => { }, }; - createRunner(__dirname, 'app-path.mjs') + await createRunner(__dirname, 'app-path.mjs') .withMockSentryServer() .expect({ event: ANR_EVENT_WITH_SPECIFIC_DEBUG_META }) - .start(done); + .start() + .completed(); }); - test('multiple events via maxAnrEvents', done => { - createRunner(__dirname, 'basic-multiple.mjs') + test('multiple events via maxAnrEvents', async () => { + await createRunner(__dirname, 'basic-multiple.mjs') .withMockSentryServer() .expect({ event: ANR_EVENT_WITH_DEBUG_META }) .expect({ event: ANR_EVENT_WITH_DEBUG_META }) - .start(done); + .start() + .completed(); }); - test('blocked indefinitely', done => { - createRunner(__dirname, 'indefinite.mjs').withMockSentryServer().expect({ event: ANR_EVENT }).start(done); + test('blocked indefinitely', async () => { + await createRunner(__dirname, 'indefinite.mjs') + .withMockSentryServer() + .expect({ event: ANR_EVENT }) + .start() + .completed(); }); - test("With --inspect the debugger isn't used", done => { - createRunner(__dirname, 'basic.mjs') + test("With --inspect the debugger isn't used", async () => { + await createRunner(__dirname, 'basic.mjs') .withMockSentryServer() .withFlags('--inspect') .expect({ event: ANR_EVENT_WITHOUT_STACKTRACE }) - .start(done); + .start() + .completed(); }); - test('should exit', done => { + test('should exit', async () => { const runner = createRunner(__dirname, 'should-exit.js').start(); - setTimeout(() => { - expect(runner.childHasExited()).toBe(true); - done(); - }, 5_000); + await new Promise(resolve => setTimeout(resolve, 5_000)); + + expect(runner.childHasExited()).toBe(true); }); - test('should exit forced', done => { + test('should exit forced', async () => { const runner = createRunner(__dirname, 'should-exit-forced.js').start(); - setTimeout(() => { - expect(runner.childHasExited()).toBe(true); - done(); - }, 5_000); + await new Promise(resolve => setTimeout(resolve, 5_000)); + + expect(runner.childHasExited()).toBe(true); }); - test('With session', done => { - createRunner(__dirname, 'basic-session.js') + test('With session', async () => { + await createRunner(__dirname, 'basic-session.js') .withMockSentryServer() .unignore('session') .expect({ @@ -194,15 +205,16 @@ describe('should report ANR when event loop blocked', () => { }, }) .expect({ event: ANR_EVENT_WITH_SCOPE }) - .start(done); + .start() + .completed(); }); - test('from forked process', done => { - createRunner(__dirname, 'forker.js').expect({ event: ANR_EVENT_WITH_SCOPE }).start(done); + test('from forked process', async () => { + await createRunner(__dirname, 'forker.js').expect({ event: ANR_EVENT_WITH_SCOPE }).start().completed(); }); - test('worker can be stopped and restarted', done => { - createRunner(__dirname, 'stop-and-start.js').expect({ event: ANR_EVENT_WITH_SCOPE }).start(done); + test('worker can be stopped and restarted', async () => { + await createRunner(__dirname, 'stop-and-start.js').expect({ event: ANR_EVENT_WITH_SCOPE }).start().completed(); }); const EXPECTED_ISOLATED_EVENT = { @@ -231,10 +243,11 @@ describe('should report ANR when event loop blocked', () => { }, }; - test('fetches correct isolated scope', done => { - createRunner(__dirname, 'isolated.mjs') + test('fetches correct isolated scope', async () => { + await createRunner(__dirname, 'isolated.mjs') .withMockSentryServer() .expect({ event: EXPECTED_ISOLATED_EVENT }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts index 90e2f94a9bed..0f496263c9f1 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; const EXPECTED_TRANSCATION = { @@ -26,7 +27,11 @@ describe('awsIntegration', () => { cleanupChildProcesses(); }); - test('should auto-instrument aws-sdk v2 package.', done => { - createRunner(__dirname, 'scenario.js').ignore('event').expect({ transaction: EXPECTED_TRANSCATION }).start(done); + test('should auto-instrument aws-sdk v2 package.', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ transaction: EXPECTED_TRANSCATION }) + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/test.ts b/dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/test.ts index 632568fa85d1..a3ae49da4808 100644 --- a/dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/test.ts +++ b/dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/test.ts @@ -1,4 +1,5 @@ import type { Event } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { conditionalTest } from '../../../utils'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; @@ -39,10 +40,11 @@ conditionalTest({ min: 20 })('should capture process and thread breadcrumbs', () cleanupChildProcesses(); }); - test('ESM', done => { - createRunner(__dirname, 'app.mjs') + test('ESM', async () => { + await createRunner(__dirname, 'app.mjs') .withMockSentryServer() .expect({ event: EVENT as Event }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/child-process/test.ts b/dev-packages/node-integration-tests/suites/child-process/test.ts index 9b9064dacf3e..798cd48d86d0 100644 --- a/dev-packages/node-integration-tests/suites/child-process/test.ts +++ b/dev-packages/node-integration-tests/suites/child-process/test.ts @@ -1,4 +1,5 @@ import type { Event } from '@sentry/core'; +import { afterAll, describe, expect, test } from 'vitest'; import { conditionalTest } from '../../utils'; import { cleanupChildProcesses, createRunner } from '../../utils/runner'; @@ -44,22 +45,22 @@ describe('should capture child process events', () => { }); conditionalTest({ min: 20 })('worker', () => { - test('ESM', done => { - createRunner(__dirname, 'worker.mjs').expect({ event: WORKER_EVENT }).start(done); + test('ESM', async () => { + await createRunner(__dirname, 'worker.mjs').expect({ event: WORKER_EVENT }).start().completed(); }); - test('CJS', done => { - createRunner(__dirname, 'worker.js').expect({ event: WORKER_EVENT }).start(done); + test('CJS', async () => { + await createRunner(__dirname, 'worker.js').expect({ event: WORKER_EVENT }).start().completed(); }); }); conditionalTest({ min: 20 })('fork', () => { - test('ESM', done => { - createRunner(__dirname, 'fork.mjs').expect({ event: CHILD_EVENT }).start(done); + test('ESM', async () => { + await createRunner(__dirname, 'fork.mjs').expect({ event: CHILD_EVENT }).start().completed(); }); - test('CJS', done => { - createRunner(__dirname, 'fork.js').expect({ event: CHILD_EVENT }).start(done); + test('CJS', async () => { + await createRunner(__dirname, 'fork.js').expect({ event: CHILD_EVENT }).start().completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/before-send/test.ts b/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/before-send/test.ts index 06cac1581bfe..73a40fd88d17 100644 --- a/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/before-send/test.ts +++ b/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/before-send/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should record client report for beforeSend', done => { - createRunner(__dirname, 'scenario.ts') +test('should record client report for beforeSend', async () => { + await createRunner(__dirname, 'scenario.ts') .unignore('client_report') .expect({ client_report: { @@ -29,5 +30,6 @@ test('should record client report for beforeSend', done => { ], }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/event-processors/test.ts b/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/event-processors/test.ts index 7dab2e904780..4e236e375c40 100644 --- a/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/event-processors/test.ts +++ b/dev-packages/node-integration-tests/suites/client-reports/drop-reasons/event-processors/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should record client report for event processors', done => { - createRunner(__dirname, 'scenario.ts') +test('should record client report for event processors', async () => { + await createRunner(__dirname, 'scenario.ts') .unignore('client_report') .expect({ client_report: { @@ -29,5 +30,6 @@ test('should record client report for event processors', done => { ], }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/client-reports/periodic-send/test.ts b/dev-packages/node-integration-tests/suites/client-reports/periodic-send/test.ts index 65463193e1f5..69775219b784 100644 --- a/dev-packages/node-integration-tests/suites/client-reports/periodic-send/test.ts +++ b/dev-packages/node-integration-tests/suites/client-reports/periodic-send/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should flush client reports automatically after the timeout interval', done => { - createRunner(__dirname, 'scenario.ts') +test('should flush client reports automatically after the timeout interval', async () => { + await createRunner(__dirname, 'scenario.ts') .unignore('client_report') .expect({ client_report: { @@ -18,5 +19,6 @@ test('should flush client reports automatically after the timeout interval', don ], }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/contextLines/filename-with-spaces/test.ts b/dev-packages/node-integration-tests/suites/contextLines/filename-with-spaces/test.ts index 3407d1a14f9c..f469a585b9ca 100644 --- a/dev-packages/node-integration-tests/suites/contextLines/filename-with-spaces/test.ts +++ b/dev-packages/node-integration-tests/suites/contextLines/filename-with-spaces/test.ts @@ -1,12 +1,13 @@ import { join } from 'path'; +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; describe('ContextLines integration in ESM', () => { - test('reads encoded context lines from filenames with spaces', done => { + test('reads encoded context lines from filenames with spaces', async () => { expect.assertions(1); const instrumentPath = join(__dirname, 'instrument.mjs'); - createRunner(__dirname, 'scenario with space.mjs') + await createRunner(__dirname, 'scenario with space.mjs') .withFlags('--import', instrumentPath) .expect({ event: { @@ -34,15 +35,16 @@ describe('ContextLines integration in ESM', () => { }, }, }) - .start(done); + .start() + .completed(); }); }); describe('ContextLines integration in CJS', () => { - test('reads context lines from filenames with spaces', done => { + test('reads context lines from filenames with spaces', async () => { expect.assertions(1); - createRunner(__dirname, 'scenario with space.cjs') + await createRunner(__dirname, 'scenario with space.cjs') .expect({ event: { exception: { @@ -77,6 +79,7 @@ describe('ContextLines integration in CJS', () => { }, }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/cron/cron/test.ts b/dev-packages/node-integration-tests/suites/cron/cron/test.ts index acd7815aebe1..8b9fdfd5c593 100644 --- a/dev-packages/node-integration-tests/suites/cron/cron/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/cron/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('cron instrumentation', done => { - createRunner(__dirname, 'scenario.ts') +test('cron instrumentation', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ check_in: { check_in_id: expect.any(String), @@ -71,5 +72,6 @@ test('cron instrumentation', done => { exception: { values: [{ type: 'Error', value: 'Error in cron job' }] }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts b/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts index 904da8180087..1c5fa515e208 100644 --- a/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('node-cron instrumentation', done => { - createRunner(__dirname, 'scenario.ts') +test('node-cron instrumentation', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ check_in: { check_in_id: expect.any(String), @@ -71,5 +72,6 @@ test('node-cron instrumentation', done => { exception: { values: [{ type: 'Error', value: 'Error in cron job' }] }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts b/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts index 74d815e56c88..a2019253203f 100644 --- a/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('node-schedule instrumentation', done => { - createRunner(__dirname, 'scenario.ts') +test('node-schedule instrumentation', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ check_in: { check_in_id: expect.any(String), @@ -71,5 +72,6 @@ test('node-schedule instrumentation', done => { exception: { values: [{ type: 'Error', value: 'Error in cron job' }] }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/esm/import-in-the-middle/test.ts b/dev-packages/node-integration-tests/suites/esm/import-in-the-middle/test.ts index 937edc76cd5c..99dea0e9193a 100644 --- a/dev-packages/node-integration-tests/suites/esm/import-in-the-middle/test.ts +++ b/dev-packages/node-integration-tests/suites/esm/import-in-the-middle/test.ts @@ -1,5 +1,6 @@ import { spawnSync } from 'child_process'; import { join } from 'path'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses } from '../../../utils/runner'; afterAll(() => { diff --git a/dev-packages/node-integration-tests/suites/esm/modules-integration/test.ts b/dev-packages/node-integration-tests/suites/esm/modules-integration/test.ts index eaee003781f3..94995aedb91f 100644 --- a/dev-packages/node-integration-tests/suites/esm/modules-integration/test.ts +++ b/dev-packages/node-integration-tests/suites/esm/modules-integration/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { @@ -5,7 +6,7 @@ afterAll(() => { }); describe('modulesIntegration', () => { - test('does not crash ESM setups', done => { - createRunner(__dirname, 'app.mjs').ensureNoErrorOutput().start(done); + test('does not crash ESM setups', async () => { + await createRunner(__dirname, 'app.mjs').ensureNoErrorOutput().start().completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/esm/warn-esm/test.ts b/dev-packages/node-integration-tests/suites/esm/warn-esm/test.ts index f8d752497d46..41b3ce8f46f0 100644 --- a/dev-packages/node-integration-tests/suites/esm/warn-esm/test.ts +++ b/dev-packages/node-integration-tests/suites/esm/warn-esm/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { diff --git a/dev-packages/node-integration-tests/suites/express-v5/handle-error-scope-data-loss/test.ts b/dev-packages/node-integration-tests/suites/express-v5/handle-error-scope-data-loss/test.ts index 58d4a299174c..bd2f51c16dbd 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/handle-error-scope-data-loss/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/handle-error-scope-data-loss/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { @@ -13,8 +14,8 @@ afterAll(() => { * * This test nevertheless covers the behavior so that we're aware. */ -test('withScope scope is NOT applied to thrown error caught by global handler', done => { - createRunner(__dirname, 'server.ts') +test('withScope scope is NOT applied to thrown error caught by global handler', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ event: { exception: { @@ -42,15 +43,16 @@ test('withScope scope is NOT applied to thrown error caught by global handler', tags: expect.not.objectContaining({ local: expect.anything() }), }, }) - .start(done) - .makeRequest('get', '/test/withScope', { expectError: true }); + .start(); + runner.makeRequest('get', '/test/withScope', { expectError: true }); + await runner.completed(); }); /** * This test shows that the isolation scope set tags are applied correctly to the error. */ -test('isolation scope is applied to thrown error caught by global handler', done => { - createRunner(__dirname, 'server.ts') +test('isolation scope is applied to thrown error caught by global handler', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ event: { exception: { @@ -80,6 +82,7 @@ test('isolation scope is applied to thrown error caught by global handler', done }, }, }) - .start(done) - .makeRequest('get', '/test/isolationScope', { expectError: true }); + .start(); + runner.makeRequest('get', '/test/isolationScope', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-0/test.ts b/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-0/test.ts index 3ad6a3d2068f..b6bc5de97cdb 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-0/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-0/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture and send Express controller error with txn name if tracesSampleRate is 0', done => { - createRunner(__dirname, 'server.ts') +test('should capture and send Express controller error with txn name if tracesSampleRate is 0', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { @@ -33,6 +34,7 @@ test('should capture and send Express controller error with txn name if tracesSa transaction: 'GET /test/express/:id', }, }) - .start(done) - .makeRequest('get', '/test/express/123', { expectError: true }); + .start(); + runner.makeRequest('get', '/test/express/123', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-unset/test.ts b/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-unset/test.ts index b02d74016ad4..899a611cdfe0 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-unset/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/handle-error-tracesSampleRate-unset/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture and send Express controller error if tracesSampleRate is not set.', done => { - createRunner(__dirname, 'server.ts') +test('should capture and send Express controller error if tracesSampleRate is not set.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { @@ -32,6 +33,7 @@ test('should capture and send Express controller error if tracesSampleRate is no }, }, }) - .start(done) - .makeRequest('get', '/test/express/123', { expectError: true }); + .start(); + runner.makeRequest('get', '/test/express/123', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-init/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-init/test.ts index b80669a7c432..04d45fe557ef 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-init/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-init/test.ts @@ -1,10 +1,11 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('allows to call init multiple times', done => { +test('allows to call init multiple times', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -59,7 +60,7 @@ test('allows to call init multiple times', done => { }, }, }) - .start(done); + .start(); runner .makeRequest('get', '/test/no-init') @@ -67,4 +68,5 @@ test('allows to call init multiple times', done => { .then(() => runner.makeRequest('get', '/test/init')) .then(() => runner.makeRequest('get', '/test/error/2')) .then(() => runner.makeRequest('get', '/test/error/3')); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix-parameterized/test.ts index e7b9edabbfc8..85c3d0a2c353 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with common infixes with multiple parameterized routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with common infixes with multiple parameterized routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/3212'); + .start(); + runner.makeRequest('get', '/api/v1/user/3212'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix/test.ts index 52d6b631bea2..f6a29574e254 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-infix/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with common infixes with multiple routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with common infixes with multiple routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api2/v1/test' } }) - .start(done) - .makeRequest('get', '/api2/v1/test'); + .start(); + runner.makeRequest('get', '/api2/v1/test'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized-reverse/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized-reverse/test.ts index 5fabe5b92df6..b2b5baabd103 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized-reverse/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized-reverse/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple parameterized routers (use order reversed).', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple parameterized routers (use order reversed).', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/user/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized/test.ts index bab934f54522..f362d49ddd03 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple parameterized routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple parameterized routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/user/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized copy/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized copy/test.ts index 94d363f4faa4..146e7d0625c5 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized copy/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized copy/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with multiple parameterized routers of the same length (use order reversed).', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with multiple parameterized routers of the same length (use order reversed).', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized/test.ts index 373b2c102c4c..3209cde3ea23 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix-same-length-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with multiple parameterized routers of the same length.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with multiple parameterized routers of the same length.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix/test.ts index ea217bf6bc05..12c6584b2d3f 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/common-prefix/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/test' } }) - .start(done) - .makeRequest('get', '/api/v1/test'); + .start(); + runner.makeRequest('get', '/api/v1/test'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/complex-router/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/complex-router/test.ts index fe065d0dc550..30d1e6d0a6bc 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/complex-router/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/complex-router/test.ts @@ -1,3 +1,4 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { @@ -5,7 +6,7 @@ afterAll(() => { }); describe('complex-router', () => { - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -13,14 +14,15 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456'); + await runner.completed(); }); - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url has query params', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url has query params', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -28,14 +30,15 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456?param=1'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456?param=1'); + await runner.completed(); }); - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url ends with trailing slash and has query params', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url ends with trailing slash and has query params', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -43,10 +46,11 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456/?param=1'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456/?param=1'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/middle-layer-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/middle-layer-parameterized/test.ts index 52a6ce154684..6f24e03bac59 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/middle-layer-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/multiple-routers/middle-layer-parameterized/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { @@ -6,7 +7,7 @@ afterAll(() => { // Before Node 16, parametrization is not working properly here describe('middle-layer-parameterized', () => { - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/v1/users/:userId/posts/:postId', transaction_info: { @@ -14,10 +15,11 @@ describe('middle-layer-parameterized', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/v1/users/123/posts/456'); + .start(); + runner.makeRequest('get', '/api/v1/users/123/posts/456'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/requestUser/test.ts b/dev-packages/node-integration-tests/suites/express-v5/requestUser/test.ts index 2a9fc58a7c18..2605b7ed5127 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/requestUser/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/requestUser/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express user handling', () => { @@ -5,22 +6,23 @@ describe('express user handling', () => { cleanupChildProcesses(); }); - test('ignores user from request', done => { + test('ignores user from request', async () => { expect.assertions(2); - createRunner(__dirname, 'server.js') + const runner = createRunner(__dirname, 'server.js') .expect({ event: event => { expect(event.user).toBeUndefined(); expect(event.exception?.values?.[0]?.value).toBe('error_1'); }, }) - .start(done) - .makeRequest('get', '/test1', { expectError: true }); + .start(); + runner.makeRequest('get', '/test1', { expectError: true }); + await runner.completed(); }); - test('using setUser in middleware works', done => { - createRunner(__dirname, 'server.js') + test('using setUser in middleware works', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ event: { user: { @@ -36,7 +38,8 @@ describe('express user handling', () => { }, }, }) - .start(done) - .makeRequest('get', '/test2', { expectError: true }); + .start(); + runner.makeRequest('get', '/test2', { expectError: true }); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-assign/test.ts index 513cf6146d0f..8b8d648513e4 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-assign/test.ts @@ -1,4 +1,5 @@ import { parseBaggageHeader } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-out/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-out/test.ts index 72b6a7139f35..913fcd5e2038 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-header-out/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from './server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts index ebf2a15bedf4..2d2074be773c 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors/test.ts index 0beecb54a905..beb118944408 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-other-vendors/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from './server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-transaction-name/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-transaction-name/test.ts index 1001d0839aea..436a8ea9b4da 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-transaction-name/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/baggage-transaction-name/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-assign/test.ts index 40bbb03f8d50..7d0a729dc4ff 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-assign/test.ts @@ -1,4 +1,5 @@ import { TRACEPARENT_REGEXP } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-out/test.ts b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-out/test.ts index db46bb491904..8ed4d08bba55 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/sentry-trace/trace-header-out/test.ts @@ -1,4 +1,5 @@ import { TRACEPARENT_REGEXP } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express-v5/setupExpressErrorHandler/test.ts b/dev-packages/node-integration-tests/suites/express-v5/setupExpressErrorHandler/test.ts index ffc702d63057..571ffc52e224 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/setupExpressErrorHandler/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/setupExpressErrorHandler/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express setupExpressErrorHandler', () => { @@ -6,7 +7,7 @@ describe('express setupExpressErrorHandler', () => { }); describe('CJS', () => { - test('allows to pass options to setupExpressErrorHandler', done => { + test('allows to pass options to setupExpressErrorHandler', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ event: { @@ -19,12 +20,13 @@ describe('express setupExpressErrorHandler', () => { }, }, }) - .start(done); + .start(); // this error is filtered & ignored runner.makeRequest('get', '/test1', { expectError: true }); // this error is actually captured runner.makeRequest('get', '/test2', { expectError: true }); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/span-isolationScope/test.ts b/dev-packages/node-integration-tests/suites/express-v5/span-isolationScope/test.ts index 2e2b6945526e..f8c7c11378d5 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/span-isolationScope/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/span-isolationScope/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('correctly applies isolation scope to span', done => { - createRunner(__dirname, 'server.ts') +test('correctly applies isolation scope to span', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { transaction: 'GET /test/isolationScope', @@ -33,6 +34,7 @@ test('correctly applies isolation scope to span', done => { }, }, }) - .start(done) - .makeRequest('get', '/test/isolationScope'); + .start(); + runner.makeRequest('get', '/test/isolationScope'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/tracing/test.ts b/dev-packages/node-integration-tests/suites/express-v5/tracing/test.ts index 6f87fdd89f76..cf20276f4fc2 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/tracing/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express tracing', () => { @@ -6,8 +7,8 @@ describe('express tracing', () => { }); describe('CJS', () => { - test('should create and send transactions for Express routes and spans for middlewares.', done => { - createRunner(__dirname, 'server.js') + test('should create and send transactions for Express routes and spans for middlewares.', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { contexts: { @@ -44,12 +45,13 @@ describe('express tracing', () => { ]), }, }) - .start(done) - .makeRequest('get', '/test/express'); + .start(); + runner.makeRequest('get', '/test/express'); + await runner.completed(); }); - test('should set a correct transaction name for routes specified in RegEx', done => { - createRunner(__dirname, 'server.js') + test('should set a correct transaction name for routes specified in RegEx', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /\\/test\\/regex/', @@ -70,8 +72,9 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/regex'); + .start(); + runner.makeRequest('get', '/test/regex'); + await runner.completed(); }); test.each([['array1'], ['array5']])( @@ -137,7 +140,7 @@ describe('express tracing', () => { }) as any); describe('request data', () => { - test('correctly captures JSON request data', done => { + test('correctly captures JSON request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -156,12 +159,13 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { data: { foo: 'bar', other: 1 } }); + await runner.completed(); }); - test('correctly captures plain text request data', done => { + test('correctly captures plain text request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -177,15 +181,16 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'text/plain' }, data: 'some plain text', }); + await runner.completed(); }); - test('correctly captures text buffer request data', done => { + test('correctly captures text buffer request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -201,15 +206,16 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: Buffer.from('some plain text in buffer'), }); + await runner.completed(); }); - test('correctly captures non-text buffer request data', done => { + test('correctly captures non-text buffer request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -226,7 +232,7 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); const body = new Uint8Array([1, 2, 3, 4, 5]).buffer; @@ -234,6 +240,7 @@ describe('express tracing', () => { headers: { 'Content-Type': 'application/octet-stream' }, data: body, }); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/tracing/tracesSampler/test.ts b/dev-packages/node-integration-tests/suites/express-v5/tracing/tracesSampler/test.ts index 07cc8d094d8f..1b644ada387a 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/tracing/tracesSampler/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/tracing/tracesSampler/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracesSampler', () => { @@ -6,19 +7,20 @@ describe('express tracesSampler', () => { }); describe('CJS', () => { - test('correctly samples & passes data to tracesSampler', done => { + test('correctly samples & passes data to tracesSampler', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id', }, }) - .start(done); + .start(); // This is not sampled runner.makeRequest('get', '/test2?q=1'); // This is sampled runner.makeRequest('get', '/test/123?q=1'); + await runner.completed(); }); }); }); @@ -29,16 +31,17 @@ describe('express tracesSampler includes normalizedRequest data', () => { }); describe('CJS', () => { - test('correctly samples & passes data to tracesSampler', done => { + test('correctly samples & passes data to tracesSampler', async () => { const runner = createRunner(__dirname, 'scenario-normalizedRequest.js') .expect({ transaction: { transaction: 'GET /test-normalized-request', }, }) - .start(done); + .start(); runner.makeRequest('get', '/test-normalized-request?query=123'); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/tracing/updateName/test.ts b/dev-packages/node-integration-tests/suites/express-v5/tracing/updateName/test.ts index c6345713fd7e..227cf6042c44 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/tracing/updateName/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/tracing/updateName/test.ts @@ -1,5 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/node'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracing', () => { @@ -11,8 +12,8 @@ describe('express tracing', () => { // This test documents the unfortunate behaviour of using `span.updateName` on the server-side. // For http.server root spans (which is the root span on the server 99% of the time), Otel's http instrumentation // calls `span.updateName` and overwrites whatever the name was set to before (by us or by users). - test("calling just `span.updateName` doesn't update the final name in express (missing source)", done => { - createRunner(__dirname, 'server.js') + test("calling just `span.updateName` doesn't update the final name in express (missing source)", async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id/span-updateName', @@ -21,14 +22,15 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/123/span-updateName'); + .start(); + runner.makeRequest('get', '/test/123/span-updateName'); + await runner.completed(); }); // Also calling `updateName` AND setting a source doesn't change anything - Otel has no concept of source, this is sentry-internal. // Therefore, only the source is updated but the name is still overwritten by Otel. - test("calling `span.updateName` and setting attribute source doesn't update the final name in express but it updates the source", done => { - createRunner(__dirname, 'server.js') + test("calling `span.updateName` and setting attribute source doesn't update the final name in express but it updates the source", async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id/span-updateName-source', @@ -37,13 +39,14 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/123/span-updateName-source'); + .start(); + runner.makeRequest('get', '/test/123/span-updateName-source'); + await runner.completed(); }); // This test documents the correct way to update the span name (and implicitly the source) in Node: - test('calling `Sentry.updateSpanName` updates the final name and source in express', done => { - createRunner(__dirname, 'server.js') + test('calling `Sentry.updateSpanName` updates the final name and source in express', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: txnEvent => { expect(txnEvent).toMatchObject({ @@ -62,14 +65,15 @@ describe('express tracing', () => { expect(txnEvent.contexts?.trace?.data?.[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]).toBeUndefined(); }, }) - .start(done) - .makeRequest('get', '/test/123/updateSpanName'); + .start(); + runner.makeRequest('get', '/test/123/updateSpanName'); + await runner.completed(); }); }); // This test documents the correct way to update the span name (and implicitly the source) in Node: - test('calling `Sentry.updateSpanName` and setting source subsequently updates the final name and sets correct source', done => { - createRunner(__dirname, 'server.js') + test('calling `Sentry.updateSpanName` and setting source subsequently updates the final name and sets correct source', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: txnEvent => { expect(txnEvent).toMatchObject({ @@ -88,7 +92,8 @@ describe('express tracing', () => { expect(txnEvent.contexts?.trace?.data?.[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]).toBeUndefined(); }, }) - .start(done) - .makeRequest('get', '/test/123/updateSpanNameAndSource'); + .start(); + runner.makeRequest('get', '/test/123/updateSpanNameAndSource'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/tracing/withError/test.ts b/dev-packages/node-integration-tests/suites/express-v5/tracing/withError/test.ts index 4dd004ad2239..e99c5bf44700 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/tracing/withError/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/tracing/withError/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracing experimental', () => { @@ -6,8 +7,8 @@ describe('express tracing experimental', () => { }); describe('CJS', () => { - test('should apply the scope transactionName to error events', done => { - createRunner(__dirname, 'server.js') + test('should apply the scope transactionName to error events', async () => { + const runner = createRunner(__dirname, 'server.js') .ignore('transaction') .expect({ event: { @@ -21,8 +22,9 @@ describe('express tracing experimental', () => { transaction: 'GET /test/:id1/:id2', }, }) - .start(done) - .makeRequest('get', '/test/123/abc?q=1'); + .start(); + runner.makeRequest('get', '/test/123/abc?q=1'); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express-v5/without-tracing/test.ts b/dev-packages/node-integration-tests/suites/express-v5/without-tracing/test.ts index fdd63ad4aa4b..5dc6aedecbd4 100644 --- a/dev-packages/node-integration-tests/suites/express-v5/without-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express-v5/without-tracing/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { @@ -5,7 +6,7 @@ afterAll(() => { }); describe('express without tracing', () => { - test('correctly applies isolation scope even without tracing', done => { + test('correctly applies isolation scope even without tracing', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -25,13 +26,14 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('get', '/test/isolationScope/1'); + await runner.completed(); }); describe('request data', () => { - test('correctly captures JSON request data', done => { + test('correctly captures JSON request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -50,12 +52,13 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { data: { foo: 'bar', other: 1 } }); + await runner.completed(); }); - test('correctly captures plain text request data', done => { + test('correctly captures plain text request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -71,7 +74,7 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { @@ -79,9 +82,10 @@ describe('express without tracing', () => { }, data: 'some plain text', }); + await runner.completed(); }); - test('correctly captures text buffer request data', done => { + test('correctly captures text buffer request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -97,15 +101,16 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: Buffer.from('some plain text in buffer'), }); + await runner.completed(); }); - test('correctly captures non-text buffer request data', done => { + test('correctly captures non-text buffer request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -122,11 +127,12 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); const body = new Uint8Array([1, 2, 3, 4, 5]).buffer; runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: body }); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/handle-error-scope-data-loss/test.ts b/dev-packages/node-integration-tests/suites/express/handle-error-scope-data-loss/test.ts index 58d4a299174c..eda622f1cf6c 100644 --- a/dev-packages/node-integration-tests/suites/express/handle-error-scope-data-loss/test.ts +++ b/dev-packages/node-integration-tests/suites/express/handle-error-scope-data-loss/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { @@ -13,8 +14,8 @@ afterAll(() => { * * This test nevertheless covers the behavior so that we're aware. */ -test('withScope scope is NOT applied to thrown error caught by global handler', done => { - createRunner(__dirname, 'server.ts') +test('withScope scope is NOT applied to thrown error caught by global handler', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ event: { exception: { @@ -42,15 +43,18 @@ test('withScope scope is NOT applied to thrown error caught by global handler', tags: expect.not.objectContaining({ local: expect.anything() }), }, }) - .start(done) - .makeRequest('get', '/test/withScope', { expectError: true }); + .start(); + + runner.makeRequest('get', '/test/withScope', { expectError: true }); + + await runner.completed(); }); /** * This test shows that the isolation scope set tags are applied correctly to the error. */ -test('isolation scope is applied to thrown error caught by global handler', done => { - createRunner(__dirname, 'server.ts') +test('isolation scope is applied to thrown error caught by global handler', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ event: { exception: { @@ -80,6 +84,9 @@ test('isolation scope is applied to thrown error caught by global handler', done }, }, }) - .start(done) - .makeRequest('get', '/test/isolationScope', { expectError: true }); + .start(); + + runner.makeRequest('get', '/test/isolationScope', { expectError: true }); + + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-0/test.ts b/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-0/test.ts index 3ad6a3d2068f..b6bc5de97cdb 100644 --- a/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-0/test.ts +++ b/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-0/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture and send Express controller error with txn name if tracesSampleRate is 0', done => { - createRunner(__dirname, 'server.ts') +test('should capture and send Express controller error with txn name if tracesSampleRate is 0', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { @@ -33,6 +34,7 @@ test('should capture and send Express controller error with txn name if tracesSa transaction: 'GET /test/express/:id', }, }) - .start(done) - .makeRequest('get', '/test/express/123', { expectError: true }); + .start(); + runner.makeRequest('get', '/test/express/123', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-unset/test.ts b/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-unset/test.ts index b02d74016ad4..4f0dcaae1411 100644 --- a/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-unset/test.ts +++ b/dev-packages/node-integration-tests/suites/express/handle-error-tracesSampleRate-unset/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture and send Express controller error if tracesSampleRate is not set.', done => { - createRunner(__dirname, 'server.ts') +test('should capture and send Express controller error if tracesSampleRate is not set.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { @@ -32,6 +33,8 @@ test('should capture and send Express controller error if tracesSampleRate is no }, }, }) - .start(done) - .makeRequest('get', '/test/express/123', { expectError: true }); + .start(); + + runner.makeRequest('get', '/test/express/123', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-init/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-init/test.ts index b80669a7c432..7ab331485e7d 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-init/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-init/test.ts @@ -1,10 +1,11 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('allows to call init multiple times', done => { +test('allows to call init multiple times', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -59,7 +60,7 @@ test('allows to call init multiple times', done => { }, }, }) - .start(done); + .start(); runner .makeRequest('get', '/test/no-init') @@ -67,4 +68,6 @@ test('allows to call init multiple times', done => { .then(() => runner.makeRequest('get', '/test/init')) .then(() => runner.makeRequest('get', '/test/error/2')) .then(() => runner.makeRequest('get', '/test/error/3')); + + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/test.ts index e7b9edabbfc8..85c3d0a2c353 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with common infixes with multiple parameterized routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with common infixes with multiple parameterized routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/3212'); + .start(); + runner.makeRequest('get', '/api/v1/user/3212'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/test.ts index 52d6b631bea2..f6a29574e254 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with common infixes with multiple routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with common infixes with multiple routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api2/v1/test' } }) - .start(done) - .makeRequest('get', '/api2/v1/test'); + .start(); + runner.makeRequest('get', '/api2/v1/test'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/test.ts index 5fabe5b92df6..b2b5baabd103 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple parameterized routers (use order reversed).', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple parameterized routers (use order reversed).', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/user/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/test.ts index bab934f54522..f362d49ddd03 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple parameterized routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple parameterized routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/user/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/user/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/user/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/test.ts index 94d363f4faa4..146e7d0625c5 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with multiple parameterized routers of the same length (use order reversed).', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with multiple parameterized routers of the same length (use order reversed).', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/test.ts index 373b2c102c4c..3209cde3ea23 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct url with multiple parameterized routers of the same length.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct url with multiple parameterized routers of the same length.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/:userId' } }) - .start(done) - .makeRequest('get', '/api/v1/1234/'); + .start(); + runner.makeRequest('get', '/api/v1/1234/'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/test.ts index ea217bf6bc05..12c6584b2d3f 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/test.ts @@ -1,13 +1,15 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should construct correct urls with multiple routers.', done => { - createRunner(__dirname, 'server.ts') +test('should construct correct urls with multiple routers.', async () => { + const runner = createRunner(__dirname, 'server.ts') .ignore('transaction') .expect({ event: { message: 'Custom Message', transaction: 'GET /api/v1/test' } }) - .start(done) - .makeRequest('get', '/api/v1/test'); + .start(); + runner.makeRequest('get', '/api/v1/test'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/test.ts index fe065d0dc550..fbb97cb6b1df 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { @@ -5,7 +6,7 @@ afterAll(() => { }); describe('complex-router', () => { - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -13,14 +14,15 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456'); + await runner.completed(); }); - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url has query params', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url has query params', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -28,14 +30,15 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456?param=1'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456?param=1'); + await runner.completed(); }); - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url ends with trailing slash and has query params', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route and express used multiple middlewares with route and original url ends with trailing slash and has query params', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/api/v1/sub-router/users/:userId/posts/:postId', transaction_info: { @@ -43,10 +46,11 @@ describe('complex-router', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456/?param=1'); + .start(); + runner.makeRequest('get', '/api/api/v1/sub-router/users/123/posts/456/?param=1'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/test.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/test.ts index 52a6ce154684..6f24e03bac59 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/test.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { @@ -6,7 +7,7 @@ afterAll(() => { // Before Node 16, parametrization is not working properly here describe('middle-layer-parameterized', () => { - test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route', done => { + test('should construct correct url with multiple parameterized routers, when param is also contain in middle layer route', async () => { const EXPECTED_TRANSACTION = { transaction: 'GET /api/v1/users/:userId/posts/:postId', transaction_info: { @@ -14,10 +15,11 @@ describe('middle-layer-parameterized', () => { }, }; - createRunner(__dirname, 'server.ts') + const runner = createRunner(__dirname, 'server.ts') .ignore('event') .expect({ transaction: EXPECTED_TRANSACTION as any }) - .start(done) - .makeRequest('get', '/api/v1/users/123/posts/456'); + .start(); + runner.makeRequest('get', '/api/v1/users/123/posts/456'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/requestUser/test.ts b/dev-packages/node-integration-tests/suites/express/requestUser/test.ts index 2a9fc58a7c18..2605b7ed5127 100644 --- a/dev-packages/node-integration-tests/suites/express/requestUser/test.ts +++ b/dev-packages/node-integration-tests/suites/express/requestUser/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express user handling', () => { @@ -5,22 +6,23 @@ describe('express user handling', () => { cleanupChildProcesses(); }); - test('ignores user from request', done => { + test('ignores user from request', async () => { expect.assertions(2); - createRunner(__dirname, 'server.js') + const runner = createRunner(__dirname, 'server.js') .expect({ event: event => { expect(event.user).toBeUndefined(); expect(event.exception?.values?.[0]?.value).toBe('error_1'); }, }) - .start(done) - .makeRequest('get', '/test1', { expectError: true }); + .start(); + runner.makeRequest('get', '/test1', { expectError: true }); + await runner.completed(); }); - test('using setUser in middleware works', done => { - createRunner(__dirname, 'server.js') + test('using setUser in middleware works', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ event: { user: { @@ -36,7 +38,8 @@ describe('express user handling', () => { }, }, }) - .start(done) - .makeRequest('get', '/test2', { expectError: true }); + .start(); + runner.makeRequest('get', '/test2', { expectError: true }); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts index 513cf6146d0f..8b8d648513e4 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts @@ -1,4 +1,5 @@ import { parseBaggageHeader } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts index 72b6a7139f35..913fcd5e2038 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from './server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts index ebf2a15bedf4..2d2074be773c 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/test.ts index 0beecb54a905..beb118944408 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from './server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/test.ts index 1001d0839aea..436a8ea9b4da 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/test.ts @@ -1,3 +1,4 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts index 40bbb03f8d50..7d0a729dc4ff 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts @@ -1,4 +1,5 @@ import { TRACEPARENT_REGEXP } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts index db46bb491904..8ed4d08bba55 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts @@ -1,4 +1,5 @@ import { TRACEPARENT_REGEXP } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/setupExpressErrorHandler/test.ts b/dev-packages/node-integration-tests/suites/express/setupExpressErrorHandler/test.ts index ffc702d63057..cb76cf3c929b 100644 --- a/dev-packages/node-integration-tests/suites/express/setupExpressErrorHandler/test.ts +++ b/dev-packages/node-integration-tests/suites/express/setupExpressErrorHandler/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express setupExpressErrorHandler', () => { @@ -6,7 +7,7 @@ describe('express setupExpressErrorHandler', () => { }); describe('CJS', () => { - test('allows to pass options to setupExpressErrorHandler', done => { + test('allows to pass options to setupExpressErrorHandler', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ event: { @@ -19,12 +20,14 @@ describe('express setupExpressErrorHandler', () => { }, }, }) - .start(done); + .start(); // this error is filtered & ignored runner.makeRequest('get', '/test1', { expectError: true }); // this error is actually captured runner.makeRequest('get', '/test2', { expectError: true }); + + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/span-isolationScope/test.ts b/dev-packages/node-integration-tests/suites/express/span-isolationScope/test.ts index 2e2b6945526e..f8c7c11378d5 100644 --- a/dev-packages/node-integration-tests/suites/express/span-isolationScope/test.ts +++ b/dev-packages/node-integration-tests/suites/express/span-isolationScope/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('correctly applies isolation scope to span', done => { - createRunner(__dirname, 'server.ts') +test('correctly applies isolation scope to span', async () => { + const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { transaction: 'GET /test/isolationScope', @@ -33,6 +34,7 @@ test('correctly applies isolation scope to span', done => { }, }, }) - .start(done) - .makeRequest('get', '/test/isolationScope'); + .start(); + runner.makeRequest('get', '/test/isolationScope'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/test.ts index 1c1d8439822d..ebf9977e722b 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('express tracing', () => { @@ -6,8 +7,8 @@ describe('express tracing', () => { }); describe('CJS', () => { - test('should create and send transactions for Express routes and spans for middlewares.', done => { - createRunner(__dirname, 'server.js') + test('should create and send transactions for Express routes and spans for middlewares.', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { contexts: { @@ -44,12 +45,13 @@ describe('express tracing', () => { ]), }, }) - .start(done) - .makeRequest('get', '/test/express'); + .start(); + runner.makeRequest('get', '/test/express'); + await runner.completed(); }); - test('should set a correct transaction name for routes specified in RegEx', done => { - createRunner(__dirname, 'server.js') + test('should set a correct transaction name for routes specified in RegEx', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /\\/test\\/regex/', @@ -70,8 +72,9 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/regex'); + .start(); + runner.makeRequest('get', '/test/regex'); + await runner.completed(); }); test.each([['array1'], ['array5']])( @@ -139,7 +142,7 @@ describe('express tracing', () => { }) as any); describe('request data', () => { - test('correctly captures JSON request data', done => { + test('correctly captures JSON request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -158,12 +161,13 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { data: { foo: 'bar', other: 1 } }); + await runner.completed(); }); - test('correctly captures plain text request data', done => { + test('correctly captures plain text request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -179,15 +183,16 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'text/plain' }, data: 'some plain text', }); + await runner.completed(); }); - test('correctly captures text buffer request data', done => { + test('correctly captures text buffer request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -203,15 +208,16 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: Buffer.from('some plain text in buffer'), }); + await runner.completed(); }); - test('correctly captures non-text buffer request data', done => { + test('correctly captures non-text buffer request data', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { @@ -228,7 +234,7 @@ describe('express tracing', () => { }, }, }) - .start(done); + .start(); const body = new Uint8Array([1, 2, 3, 4, 5]).buffer; @@ -236,6 +242,7 @@ describe('express tracing', () => { headers: { 'Content-Type': 'application/octet-stream' }, data: body, }); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/tracesSampler/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/tracesSampler/test.ts index 07cc8d094d8f..1b644ada387a 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/tracesSampler/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/tracesSampler/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracesSampler', () => { @@ -6,19 +7,20 @@ describe('express tracesSampler', () => { }); describe('CJS', () => { - test('correctly samples & passes data to tracesSampler', done => { + test('correctly samples & passes data to tracesSampler', async () => { const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id', }, }) - .start(done); + .start(); // This is not sampled runner.makeRequest('get', '/test2?q=1'); // This is sampled runner.makeRequest('get', '/test/123?q=1'); + await runner.completed(); }); }); }); @@ -29,16 +31,17 @@ describe('express tracesSampler includes normalizedRequest data', () => { }); describe('CJS', () => { - test('correctly samples & passes data to tracesSampler', done => { + test('correctly samples & passes data to tracesSampler', async () => { const runner = createRunner(__dirname, 'scenario-normalizedRequest.js') .expect({ transaction: { transaction: 'GET /test-normalized-request', }, }) - .start(done); + .start(); runner.makeRequest('get', '/test-normalized-request?query=123'); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/updateName/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/updateName/test.ts index c6345713fd7e..227cf6042c44 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/updateName/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/updateName/test.ts @@ -1,5 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/node'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracing', () => { @@ -11,8 +12,8 @@ describe('express tracing', () => { // This test documents the unfortunate behaviour of using `span.updateName` on the server-side. // For http.server root spans (which is the root span on the server 99% of the time), Otel's http instrumentation // calls `span.updateName` and overwrites whatever the name was set to before (by us or by users). - test("calling just `span.updateName` doesn't update the final name in express (missing source)", done => { - createRunner(__dirname, 'server.js') + test("calling just `span.updateName` doesn't update the final name in express (missing source)", async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id/span-updateName', @@ -21,14 +22,15 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/123/span-updateName'); + .start(); + runner.makeRequest('get', '/test/123/span-updateName'); + await runner.completed(); }); // Also calling `updateName` AND setting a source doesn't change anything - Otel has no concept of source, this is sentry-internal. // Therefore, only the source is updated but the name is still overwritten by Otel. - test("calling `span.updateName` and setting attribute source doesn't update the final name in express but it updates the source", done => { - createRunner(__dirname, 'server.js') + test("calling `span.updateName` and setting attribute source doesn't update the final name in express but it updates the source", async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { transaction: 'GET /test/:id/span-updateName-source', @@ -37,13 +39,14 @@ describe('express tracing', () => { }, }, }) - .start(done) - .makeRequest('get', '/test/123/span-updateName-source'); + .start(); + runner.makeRequest('get', '/test/123/span-updateName-source'); + await runner.completed(); }); // This test documents the correct way to update the span name (and implicitly the source) in Node: - test('calling `Sentry.updateSpanName` updates the final name and source in express', done => { - createRunner(__dirname, 'server.js') + test('calling `Sentry.updateSpanName` updates the final name and source in express', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: txnEvent => { expect(txnEvent).toMatchObject({ @@ -62,14 +65,15 @@ describe('express tracing', () => { expect(txnEvent.contexts?.trace?.data?.[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]).toBeUndefined(); }, }) - .start(done) - .makeRequest('get', '/test/123/updateSpanName'); + .start(); + runner.makeRequest('get', '/test/123/updateSpanName'); + await runner.completed(); }); }); // This test documents the correct way to update the span name (and implicitly the source) in Node: - test('calling `Sentry.updateSpanName` and setting source subsequently updates the final name and sets correct source', done => { - createRunner(__dirname, 'server.js') + test('calling `Sentry.updateSpanName` and setting source subsequently updates the final name and sets correct source', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: txnEvent => { expect(txnEvent).toMatchObject({ @@ -88,7 +92,8 @@ describe('express tracing', () => { expect(txnEvent.contexts?.trace?.data?.[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]).toBeUndefined(); }, }) - .start(done) - .makeRequest('get', '/test/123/updateSpanNameAndSource'); + .start(); + runner.makeRequest('get', '/test/123/updateSpanNameAndSource'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/withError/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/withError/test.ts index 4dd004ad2239..e99c5bf44700 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/withError/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/withError/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('express tracing experimental', () => { @@ -6,8 +7,8 @@ describe('express tracing experimental', () => { }); describe('CJS', () => { - test('should apply the scope transactionName to error events', done => { - createRunner(__dirname, 'server.js') + test('should apply the scope transactionName to error events', async () => { + const runner = createRunner(__dirname, 'server.js') .ignore('transaction') .expect({ event: { @@ -21,8 +22,9 @@ describe('express tracing experimental', () => { transaction: 'GET /test/:id1/:id2', }, }) - .start(done) - .makeRequest('get', '/test/123/abc?q=1'); + .start(); + runner.makeRequest('get', '/test/123/abc?q=1'); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/express/without-tracing/test.ts b/dev-packages/node-integration-tests/suites/express/without-tracing/test.ts index fdd63ad4aa4b..5dc6aedecbd4 100644 --- a/dev-packages/node-integration-tests/suites/express/without-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express/without-tracing/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { @@ -5,7 +6,7 @@ afterAll(() => { }); describe('express without tracing', () => { - test('correctly applies isolation scope even without tracing', done => { + test('correctly applies isolation scope even without tracing', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -25,13 +26,14 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('get', '/test/isolationScope/1'); + await runner.completed(); }); describe('request data', () => { - test('correctly captures JSON request data', done => { + test('correctly captures JSON request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -50,12 +52,13 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { data: { foo: 'bar', other: 1 } }); + await runner.completed(); }); - test('correctly captures plain text request data', done => { + test('correctly captures plain text request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -71,7 +74,7 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { @@ -79,9 +82,10 @@ describe('express without tracing', () => { }, data: 'some plain text', }); + await runner.completed(); }); - test('correctly captures text buffer request data', done => { + test('correctly captures text buffer request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -97,15 +101,16 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: Buffer.from('some plain text in buffer'), }); + await runner.completed(); }); - test('correctly captures non-text buffer request data', done => { + test('correctly captures non-text buffer request data', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ event: { @@ -122,11 +127,12 @@ describe('express without tracing', () => { }, }, }) - .start(done); + .start(); const body = new Uint8Array([1, 2, 3, 4, 5]).buffer; runner.makeRequest('post', '/test-post', { headers: { 'Content-Type': 'application/octet-stream' }, data: body }); + await runner.completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts b/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts index 05860fa1ce26..d89fdd56c56e 100644 --- a/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts +++ b/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts @@ -1,11 +1,12 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/node'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should create spans for fs operations that take target argument', done => { +test('should create spans for fs operations that take target argument', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -25,12 +26,13 @@ test('should create spans for fs operations that take target argument', done => ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/readFile-error')).resolves.toBe('done'); + await runner.completed(); }); -test('should create spans for fs operations that take one path', done => { +test('should create spans for fs operations that take one path', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -69,12 +71,13 @@ test('should create spans for fs operations that take one path', done => { ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/readFile')).resolves.toBe('done'); + await runner.completed(); }); -test('should create spans for fs operations that take src and dest arguments', done => { +test('should create spans for fs operations that take src and dest arguments', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -116,12 +119,13 @@ test('should create spans for fs operations that take src and dest arguments', d ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/copyFile')).resolves.toBe('done'); + await runner.completed(); }); -test('should create spans for fs operations that take existing path and new path arguments', done => { +test('should create spans for fs operations that take existing path and new path arguments', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -163,12 +167,13 @@ test('should create spans for fs operations that take existing path and new path ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/link')).resolves.toBe('done'); + await runner.completed(); }); -test('should create spans for fs operations that take prefix argument', done => { +test('should create spans for fs operations that take prefix argument', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -207,12 +212,13 @@ test('should create spans for fs operations that take prefix argument', done => ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/mkdtemp')).resolves.toBe('done'); + await runner.completed(); }); -test('should create spans for fs operations that take target argument', done => { +test('should create spans for fs operations that take target argument', async () => { const runner = createRunner(__dirname, 'server.ts') .expect({ transaction: { @@ -254,7 +260,8 @@ test('should create spans for fs operations that take target argument', done => ]), }, }) - .start(done); + .start(); expect(runner.makeRequest('get', '/symlink')).resolves.toBe('done'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/no-code/test.ts b/dev-packages/node-integration-tests/suites/no-code/test.ts index fdcd5bd25fc6..dfe58ff03f72 100644 --- a/dev-packages/node-integration-tests/suites/no-code/test.ts +++ b/dev-packages/node-integration-tests/suites/no-code/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../utils/runner'; const EVENT = { @@ -16,21 +17,23 @@ describe('no-code init', () => { cleanupChildProcesses(); }); - test('CJS', done => { - createRunner(__dirname, 'app.js') + test('CJS', async () => { + await createRunner(__dirname, 'app.js') .withFlags('--require=@sentry/node/init') .withMockSentryServer() .expect({ event: EVENT }) - .start(done); + .start() + .completed(); }); describe('--import', () => { - test('ESM', done => { - createRunner(__dirname, 'app.mjs') + test('ESM', async () => { + await createRunner(__dirname, 'app.mjs') .withFlags('--import=@sentry/node/init') .withMockSentryServer() .expect({ event: EVENT }) - .start(done); + .start() + .completed(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/proxy/test.ts b/dev-packages/node-integration-tests/suites/proxy/test.ts index cc2fc0b83404..805b913d4814 100644 --- a/dev-packages/node-integration-tests/suites/proxy/test.ts +++ b/dev-packages/node-integration-tests/suites/proxy/test.ts @@ -1,16 +1,18 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('proxies sentry requests', done => { - createRunner(__dirname, 'basic.js') +test('proxies sentry requests', async () => { + await createRunner(__dirname, 'basic.js') .withMockSentryServer() .expect({ event: { message: 'Hello, via proxy!', }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts index 7ed9d352474a..e95e5a9e3767 100644 --- a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts @@ -1,10 +1,11 @@ import * as path from 'path'; +import { afterAll, describe, expect, test } from 'vitest'; import { conditionalTest } from '../../../utils'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // This test takes some time because it connects the debugger etc. // So we increase the timeout here -jest.setTimeout(45_000); +// vi.setTimeout(45_000); const EXPECTED_LOCAL_VARIABLES_EVENT = { exception: { @@ -42,8 +43,8 @@ describe('LocalVariables integration', () => { cleanupChildProcesses(); }); - test('Should not include local variables by default', done => { - createRunner(__dirname, 'no-local-variables.js') + test('Should not include local variables by default', async () => { + await createRunner(__dirname, 'no-local-variables.js') .expect({ event: event => { for (const frame of event.exception?.values?.[0]?.stacktrace?.frames || []) { @@ -51,41 +52,53 @@ describe('LocalVariables integration', () => { } }, }) - .start(done); + .start() + .completed(); }); - test('Should include local variables when enabled', done => { - createRunner(__dirname, 'local-variables.js').expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }).start(done); + test('Should include local variables when enabled', async () => { + await createRunner(__dirname, 'local-variables.js') + .expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }) + .start() + .completed(); }); - test('Should include local variables when instrumenting via --require', done => { + test('Should include local variables when instrumenting via --require', async () => { const requirePath = path.resolve(__dirname, 'local-variables-instrument.js'); - createRunner(__dirname, 'local-variables-no-sentry.js') + await createRunner(__dirname, 'local-variables-no-sentry.js') .withFlags(`--require=${requirePath}`) .expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }) - .start(done); + .start() + .completed(); }); - test('Should include local variables with ESM', done => { - createRunner(__dirname, 'local-variables-caught.mjs').expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }).start(done); + test('Should include local variables with ESM', async () => { + await createRunner(__dirname, 'local-variables-caught.mjs') + .expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }) + .start() + .completed(); }); conditionalTest({ min: 19 })('Node v19+', () => { - test('Should not import inspector when not in use', done => { - createRunner(__dirname, 'deny-inspector.mjs').ensureNoErrorOutput().start(done); + test('Should not import inspector when not in use', async () => { + await createRunner(__dirname, 'deny-inspector.mjs').ensureNoErrorOutput().start().completed(); }); }); conditionalTest({ min: 20 })('Node v20+', () => { - test('Should retain original local variables when error is re-thrown', done => { - createRunner(__dirname, 'local-variables-rethrow.js') + test('Should retain original local variables when error is re-thrown', async () => { + await createRunner(__dirname, 'local-variables-rethrow.js') .expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }) - .start(done); + .start() + .completed(); }); }); - test('Includes local variables for caught exceptions when enabled', done => { - createRunner(__dirname, 'local-variables-caught.js').expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }).start(done); + test('Includes local variables for caught exceptions when enabled', async () => { + await createRunner(__dirname, 'local-variables-caught.js') + .expect({ event: EXPECTED_LOCAL_VARIABLES_EVENT }) + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/test.ts b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/test.ts index 60523dc37684..d27b08f152be 100644 --- a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/test.ts @@ -1,52 +1,13 @@ import * as childProcess from 'child_process'; import * as path from 'path'; +import { describe, expect, test } from 'vitest'; describe('OnUncaughtException integration', () => { - test('should close process on uncaught error with no additional listeners registered', done => { - expect.assertions(3); - - const testScriptPath = path.resolve(__dirname, 'no-additional-listener-test-script.js'); - - childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { - expect(err).not.toBeNull(); - expect(err?.code).toBe(1); - expect(stdout).not.toBe("I'm alive!"); - done(); - }); - }); - - test('should not close process on uncaught error when additional listeners are registered', done => { - expect.assertions(2); - - const testScriptPath = path.resolve(__dirname, 'additional-listener-test-script.js'); - - childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { - expect(err).toBeNull(); - expect(stdout).toBe("I'm alive!"); - done(); - }); - }); - - test('should log entire error object to console stderr', done => { - expect.assertions(2); - - const testScriptPath = path.resolve(__dirname, 'log-entire-error-to-console.js'); - - childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stderr) => { - expect(err).not.toBeNull(); - const errString = err?.toString() || ''; - - expect(errString).toContain(stderr); - - done(); - }); - }); - - describe('with `exitEvenIfOtherHandlersAreRegistered` set to false', () => { - test('should close process on uncaught error with no additional listeners registered', done => { + test('should close process on uncaught error with no additional listeners registered', () => + new Promise(done => { expect.assertions(3); - const testScriptPath = path.resolve(__dirname, 'mimic-native-behaviour-no-additional-listener-test-script.js'); + const testScriptPath = path.resolve(__dirname, 'no-additional-listener-test-script.js'); childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { expect(err).not.toBeNull(); @@ -54,18 +15,63 @@ describe('OnUncaughtException integration', () => { expect(stdout).not.toBe("I'm alive!"); done(); }); - }); + })); - test('should not close process on uncaught error when additional listeners are registered', done => { + test('should not close process on uncaught error when additional listeners are registered', () => + new Promise(done => { expect.assertions(2); - const testScriptPath = path.resolve(__dirname, 'mimic-native-behaviour-additional-listener-test-script.js'); + const testScriptPath = path.resolve(__dirname, 'additional-listener-test-script.js'); childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { expect(err).toBeNull(); expect(stdout).toBe("I'm alive!"); done(); }); - }); + })); + + test('should log entire error object to console stderr', () => + new Promise(done => { + expect.assertions(2); + + const testScriptPath = path.resolve(__dirname, 'log-entire-error-to-console.js'); + + childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stderr) => { + expect(err).not.toBeNull(); + const errString = err?.toString() || ''; + + expect(errString).toContain(stderr); + + done(); + }); + })); + + describe('with `exitEvenIfOtherHandlersAreRegistered` set to false', () => { + test('should close process on uncaught error with no additional listeners registered', () => + new Promise(done => { + expect.assertions(3); + + const testScriptPath = path.resolve(__dirname, 'mimic-native-behaviour-no-additional-listener-test-script.js'); + + childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { + expect(err).not.toBeNull(); + expect(err?.code).toBe(1); + expect(stdout).not.toBe("I'm alive!"); + done(); + }); + })); + + test('should not close process on uncaught error when additional listeners are registered', () => + new Promise(done => { + expect.assertions(2); + + const testScriptPath = path.resolve(__dirname, 'mimic-native-behaviour-additional-listener-test-script.js'); + + childProcess.exec(`node ${testScriptPath}`, { encoding: 'utf8' }, (err, stdout) => { + expect(err).toBeNull(); + expect(stdout).toBe("I'm alive!"); + done(); + }); + })); }); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/empty-obj/test.ts b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/empty-obj/test.ts index 224c0dc5cd7d..c4f5145a8bbf 100644 --- a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/empty-obj/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/empty-obj/test.ts @@ -1,15 +1,17 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should add an empty breadcrumb, when an empty object is given', done => { - createRunner(__dirname, 'scenario.ts') +test('should add an empty breadcrumb, when an empty object is given', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'test-empty-obj', }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/multiple_breadcrumbs/test.ts b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/multiple_breadcrumbs/test.ts index 9ee47204c635..13dba000a823 100644 --- a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/multiple_breadcrumbs/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/multiple_breadcrumbs/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should add multiple breadcrumbs', done => { - createRunner(__dirname, 'scenario.ts') +test('should add multiple breadcrumbs', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'test_multi_breadcrumbs', @@ -21,5 +22,6 @@ test('should add multiple breadcrumbs', done => { ], }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/simple_breadcrumb/test.ts b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/simple_breadcrumb/test.ts index 58b2c56f42fd..9708e00201ae 100644 --- a/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/simple_breadcrumb/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/addBreadcrumb/simple_breadcrumb/test.ts @@ -1,7 +1,8 @@ +import { test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('should add a simple breadcrumb', done => { - createRunner(__dirname, 'scenario.ts') +test('should add a simple breadcrumb', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'test_simple', @@ -14,5 +15,6 @@ test('should add a simple breadcrumb', done => { ], }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureException/catched-error/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureException/catched-error/test.ts index 1ea1bf3b8569..f78c53d5da8c 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureException/catched-error/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureException/catched-error/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should work inside catch block', done => { - createRunner(__dirname, 'scenario.ts') +test('should work inside catch block', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { exception: { @@ -39,5 +40,6 @@ test('should work inside catch block', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureException/empty-obj/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureException/empty-obj/test.ts index 4efab7398cb6..b8a6fe4f85e2 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureException/empty-obj/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureException/empty-obj/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture an empty object', done => { - createRunner(__dirname, 'scenario.ts') +test('should capture an empty object', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { exception: { @@ -22,5 +23,6 @@ test('should capture an empty object', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureException/simple-error/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureException/simple-error/test.ts index 647edb7c4a13..3afe450398e3 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureException/simple-error/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureException/simple-error/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture a simple error with message', done => { - createRunner(__dirname, 'scenario.ts') +test('should capture a simple error with message', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { exception: { @@ -25,5 +26,6 @@ test('should capture a simple error with message', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureMessage/parameterized_message/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureMessage/parameterized_message/test.ts index c67dbc7bb9ce..15e6e76306fe 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureMessage/parameterized_message/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureMessage/parameterized_message/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture a parameterized representation of the message', done => { - createRunner(__dirname, 'scenario.ts') +test('should capture a parameterized representation of the message', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { logentry: { @@ -14,5 +15,6 @@ test('should capture a parameterized representation of the message', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message/test.ts index 6e53e6eb7279..e32081747f28 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message/test.ts @@ -1,16 +1,18 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture a simple message string', done => { - createRunner(__dirname, 'scenario.ts') +test('should capture a simple message string', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'Message', level: 'info', }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message_attachStackTrace/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message_attachStackTrace/test.ts index 85b29fbcc239..8c79687b2bc4 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message_attachStackTrace/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureMessage/simple_message_attachStackTrace/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('capture a simple message string with a stack trace if `attachStackTrace` is `true`', done => { - createRunner(__dirname, 'scenario.ts') +test('capture a simple message string with a stack trace if `attachStackTrace` is `true`', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'Message', @@ -21,5 +22,6 @@ test('capture a simple message string with a stack trace if `attachStackTrace` i }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/captureMessage/with_level/test.ts b/dev-packages/node-integration-tests/suites/public-api/captureMessage/with_level/test.ts index a0f16b2f7b78..a44af6931d1f 100644 --- a/dev-packages/node-integration-tests/suites/public-api/captureMessage/with_level/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/captureMessage/with_level/test.ts @@ -1,16 +1,18 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should capture with different severity levels', done => { - createRunner(__dirname, 'scenario.ts') +test('should capture with different severity levels', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'debug_message', level: 'debug' } }) .expect({ event: { message: 'info_message', level: 'info' } }) .expect({ event: { message: 'warning_message', level: 'warning' } }) .expect({ event: { message: 'error_message', level: 'error' } }) .expect({ event: { message: 'fatal_message', level: 'fatal' } }) .expect({ event: { message: 'log_message', level: 'log' } }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/configureScope/clear_scope/test.ts b/dev-packages/node-integration-tests/suites/public-api/configureScope/clear_scope/test.ts index 234a5fed56ad..19f16417bb50 100644 --- a/dev-packages/node-integration-tests/suites/public-api/configureScope/clear_scope/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/configureScope/clear_scope/test.ts @@ -1,15 +1,17 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should clear previously set properties of a scope', done => { - createRunner(__dirname, 'scenario.ts') +test('should clear previously set properties of a scope', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'cleared_scope', }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/configureScope/set_properties/test.ts b/dev-packages/node-integration-tests/suites/public-api/configureScope/set_properties/test.ts index bb07ce4190d9..ecfb83c3a4a3 100644 --- a/dev-packages/node-integration-tests/suites/public-api/configureScope/set_properties/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/configureScope/set_properties/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set different properties of a scope', done => { - createRunner(__dirname, 'scenario.ts') +test('should set different properties of a scope', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'configured_scope', @@ -20,5 +21,6 @@ test('should set different properties of a scope', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/scopes/initialScopes/test.ts b/dev-packages/node-integration-tests/suites/public-api/scopes/initialScopes/test.ts index d9b7bc8b2fc9..8f16958cc1c9 100644 --- a/dev-packages/node-integration-tests/suites/public-api/scopes/initialScopes/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/scopes/initialScopes/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should apply scopes correctly', done => { - createRunner(__dirname, 'scenario.ts') +test('should apply scopes correctly', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'outer_before', @@ -34,5 +35,6 @@ test('should apply scopes correctly', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/scopes/isolationScope/test.ts b/dev-packages/node-integration-tests/suites/public-api/scopes/isolationScope/test.ts index 85722a870c09..eb926423ef58 100644 --- a/dev-packages/node-integration-tests/suites/public-api/scopes/isolationScope/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/scopes/isolationScope/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should apply scopes correctly', done => { - createRunner(__dirname, 'scenario.ts') +test('should apply scopes correctly', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'outer_before', @@ -51,5 +52,6 @@ test('should apply scopes correctly', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setContext/multiple-contexts/test.ts b/dev-packages/node-integration-tests/suites/public-api/setContext/multiple-contexts/test.ts index 4ede2800470c..1cf8342e2f29 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setContext/multiple-contexts/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setContext/multiple-contexts/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should record multiple contexts', done => { - createRunner(__dirname, 'scenario.ts') +test('should record multiple contexts', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'multiple_contexts', @@ -18,5 +19,6 @@ test('should record multiple contexts', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setContext/non-serializable-context/test.ts b/dev-packages/node-integration-tests/suites/public-api/setContext/non-serializable-context/test.ts index 17c265b00922..34c962e5e216 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setContext/non-serializable-context/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setContext/non-serializable-context/test.ts @@ -1,11 +1,13 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should normalize non-serializable context', done => { - createRunner(__dirname, 'scenario.ts') +test('should normalize non-serializable context', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'non_serializable', contexts: {} } }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setContext/simple-context/test.ts b/dev-packages/node-integration-tests/suites/public-api/setContext/simple-context/test.ts index a67efb9148bc..3c28a109130b 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setContext/simple-context/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setContext/simple-context/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set a simple context', done => { - createRunner(__dirname, 'scenario.ts') +test('should set a simple context', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'simple_context_object', @@ -16,5 +17,6 @@ test('should set a simple context', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setExtra/multiple-extras/test.ts b/dev-packages/node-integration-tests/suites/public-api/setExtra/multiple-extras/test.ts index feb55d69f8a4..f40d56af6579 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setExtra/multiple-extras/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setExtra/multiple-extras/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should record multiple extras of different types', done => { - createRunner(__dirname, 'scenario.ts') +test('should record multiple extras of different types', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'multiple_extras', @@ -15,5 +16,6 @@ test('should record multiple extras of different types', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setExtra/non-serializable-extra/test.ts b/dev-packages/node-integration-tests/suites/public-api/setExtra/non-serializable-extra/test.ts index f785f44f2d38..113c99883f32 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setExtra/non-serializable-extra/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setExtra/non-serializable-extra/test.ts @@ -1,16 +1,18 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should normalize non-serializable extra', done => { - createRunner(__dirname, 'scenario.ts') +test('should normalize non-serializable extra', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'non_serializable', extra: {}, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setExtra/simple-extra/test.ts b/dev-packages/node-integration-tests/suites/public-api/setExtra/simple-extra/test.ts index 3180910e5a10..115d4ca064a4 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setExtra/simple-extra/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setExtra/simple-extra/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set a simple extra', done => { - createRunner(__dirname, 'scenario.ts') +test('should set a simple extra', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'simple_extra', @@ -19,5 +20,6 @@ test('should set a simple extra', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setExtras/consecutive-calls/test.ts b/dev-packages/node-integration-tests/suites/public-api/setExtras/consecutive-calls/test.ts index c6e3cd04c475..da5dc31e9fea 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setExtras/consecutive-calls/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setExtras/consecutive-calls/test.ts @@ -1,16 +1,18 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set extras from multiple consecutive calls', done => { - createRunner(__dirname, 'scenario.ts') +test('should set extras from multiple consecutive calls', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'consecutive_calls', extra: { extra: [], Infinity: 2, null: 0, obj: { foo: ['bar', 'baz', 1] } }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setExtras/multiple-extras/test.ts b/dev-packages/node-integration-tests/suites/public-api/setExtras/multiple-extras/test.ts index c6282f3f25b1..614a157fed14 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setExtras/multiple-extras/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setExtras/multiple-extras/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should record an extras object', done => { - createRunner(__dirname, 'scenario.ts') +test('should record an extras object', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'multiple_extras', @@ -17,5 +18,6 @@ test('should record an extras object', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setMeasurement/test.ts b/dev-packages/node-integration-tests/suites/public-api/setMeasurement/test.ts index 63a32d270a72..829e6a7ed3da 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setMeasurement/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setMeasurement/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should attach measurement to transaction', done => { - createRunner(__dirname, 'scenario.ts') +test('should attach measurement to transaction', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'some_transaction', @@ -16,5 +17,6 @@ test('should attach measurement to transaction', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setTag/with-primitives/test.ts b/dev-packages/node-integration-tests/suites/public-api/setTag/with-primitives/test.ts index aaa81e79c705..23e22402c666 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setTag/with-primitives/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setTag/with-primitives/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set primitive tags', done => { - createRunner(__dirname, 'scenario.ts') +test('should set primitive tags', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'primitive_tags', @@ -18,5 +19,6 @@ test('should set primitive tags', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setTags/with-primitives/test.ts b/dev-packages/node-integration-tests/suites/public-api/setTags/with-primitives/test.ts index aaa81e79c705..23e22402c666 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setTags/with-primitives/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setTags/with-primitives/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should set primitive tags', done => { - createRunner(__dirname, 'scenario.ts') +test('should set primitive tags', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'primitive_tags', @@ -18,5 +19,6 @@ test('should set primitive tags', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setUser/unset_user/test.ts b/dev-packages/node-integration-tests/suites/public-api/setUser/unset_user/test.ts index a8c5f4483da3..9b7f3e2c23be 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setUser/unset_user/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setUser/unset_user/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should unset user', done => { - createRunner(__dirname, 'scenario.ts') +test('should unset user', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'no_user' } }) .expect({ event: { @@ -18,5 +19,6 @@ test('should unset user', done => { }, }) .expect({ event: { message: 'unset_user' } }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/setUser/update_user/test.ts b/dev-packages/node-integration-tests/suites/public-api/setUser/update_user/test.ts index 8f24c3d93949..7a6c89f4c213 100644 --- a/dev-packages/node-integration-tests/suites/public-api/setUser/update_user/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/setUser/update_user/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should update user', done => { - createRunner(__dirname, 'scenario.ts') +test('should update user', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'first_user', @@ -23,5 +24,6 @@ test('should update user', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts index 0370b123cab2..ea02312afd43 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts @@ -1,12 +1,13 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/node'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('sends a manually started root span with source custom', done => { - createRunner(__dirname, 'scenario.ts') +test('sends a manually started root span with source custom', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'test_span', @@ -20,11 +21,12 @@ test('sends a manually started root span with source custom', done => { }, }, }) - .start(done); + .start() + .completed(); }); -test("doesn't change the name for manually started spans even if attributes triggering inference are set", done => { - createRunner(__dirname, 'scenario.ts') +test("doesn't change the name for manually started spans even if attributes triggering inference are set", async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'test_span', @@ -38,5 +40,6 @@ test("doesn't change the name for manually started spans even if attributes trig }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-root-spans/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-root-spans/test.ts index ed7726d72389..e1b8f793d9b6 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-root-spans/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-root-spans/test.ts @@ -1,13 +1,14 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should send manually started parallel root spans in root context', done => { +test('should send manually started parallel root spans in root context', async () => { expect.assertions(7); - createRunner(__dirname, 'scenario.ts') + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'test_span_1' } }) .expect({ transaction: transaction => { @@ -25,5 +26,6 @@ test('should send manually started parallel root spans in root context', done => expect(trace1Id).not.toBe(traceId); }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope-with-parentSpanId/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope-with-parentSpanId/test.ts index ecc45e46b4a0..e10a1210a0c9 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope-with-parentSpanId/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope-with-parentSpanId/test.ts @@ -1,11 +1,12 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should send manually started parallel root spans outside of root context with parentSpanId', done => { - createRunner(__dirname, 'scenario.ts') +test('should send manually started parallel root spans outside of root context with parentSpanId', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'test_span_1' } }) .expect({ transaction: transaction => { @@ -21,5 +22,6 @@ test('should send manually started parallel root spans outside of root context w expect(trace1Id).not.toBe(traceId); }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope/test.ts index 58cf67c7c69a..69fc2bc2774a 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/parallel-spans-in-scope/test.ts @@ -1,13 +1,14 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should send manually started parallel root spans outside of root context', done => { +test('should send manually started parallel root spans outside of root context', async () => { expect.assertions(6); - createRunner(__dirname, 'scenario.ts') + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'test_span_1' } }) .expect({ transaction: transaction => { @@ -23,5 +24,6 @@ test('should send manually started parallel root spans outside of root context', expect(trace1Id).not.toBe(traceId); }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/updateName-method/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/updateName-method/test.ts index 676071926b91..c46efa9a7fc3 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/updateName-method/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/updateName-method/test.ts @@ -1,11 +1,12 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/node'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('updates the span name when calling `span.updateName`', done => { +test('updates the span name when calling `span.updateName`', async () => { createRunner(__dirname, 'scenario.ts') .expect({ transaction: { @@ -20,5 +21,6 @@ test('updates the span name when calling `span.updateName`', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/updateSpanName-function/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/updateSpanName-function/test.ts index c5b325fc0ea2..49149d0ed7ec 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/updateSpanName-function/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/updateSpanName-function/test.ts @@ -1,12 +1,13 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/node'; +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('updates the span name and source when calling `updateSpanName`', done => { - createRunner(__dirname, 'scenario.ts') +test('updates the span name and source when calling `updateSpanName`', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'new name', @@ -20,5 +21,6 @@ test('updates the span name and source when calling `updateSpanName`', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts index 63706d2bc9bc..c01b837db5f7 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts @@ -1,4 +1,5 @@ import type { SpanJSON } from '@sentry/core'; +import { afterAll, expect, test } from 'vitest'; import { assertSentryTransaction } from '../../../../utils/assertions'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; @@ -6,8 +7,8 @@ afterAll(() => { cleanupChildProcesses(); }); -test('should report finished spans as children of the root transaction.', done => { - createRunner(__dirname, 'scenario.ts') +test('should report finished spans as children of the root transaction.', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: transaction => { const rootSpanId = transaction.contexts?.trace?.span_id; @@ -41,5 +42,6 @@ test('should report finished spans as children of the root transaction.', done = }); }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/public-api/withScope/nested-scopes/test.ts b/dev-packages/node-integration-tests/suites/public-api/withScope/nested-scopes/test.ts index fa7384c319b8..4e646a233443 100644 --- a/dev-packages/node-integration-tests/suites/public-api/withScope/nested-scopes/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/withScope/nested-scopes/test.ts @@ -1,11 +1,12 @@ +import { afterAll, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; afterAll(() => { cleanupChildProcesses(); }); -test('should allow nested scoping', done => { - createRunner(__dirname, 'scenario.ts') +test('should allow nested scoping', async () => { + await createRunner(__dirname, 'scenario.ts') .expect({ event: { message: 'root_before', @@ -53,5 +54,6 @@ test('should allow nested scoping', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/sessions/crashed-session-aggregate/test.ts b/dev-packages/node-integration-tests/suites/sessions/crashed-session-aggregate/test.ts index 0500c702189a..712eeffcdeb3 100644 --- a/dev-packages/node-integration-tests/suites/sessions/crashed-session-aggregate/test.ts +++ b/dev-packages/node-integration-tests/suites/sessions/crashed-session-aggregate/test.ts @@ -1,10 +1,11 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -afterEach(() => { +afterAll(() => { cleanupChildProcesses(); }); -test('should aggregate successful and crashed sessions', done => { +test('should aggregate successful and crashed sessions', async () => { const runner = createRunner(__dirname, '..', 'server.ts') .ignore('transaction', 'event') .unignore('sessions') @@ -19,9 +20,10 @@ test('should aggregate successful and crashed sessions', done => { ], }, }) - .start(done); + .start(); runner.makeRequest('get', '/test/success'); runner.makeRequest('get', '/test/error_unhandled', { expectError: true }); runner.makeRequest('get', '/test/success_next'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/sessions/errored-session-aggregate/test.ts b/dev-packages/node-integration-tests/suites/sessions/errored-session-aggregate/test.ts index 1159d092fdd7..4f35e6259697 100644 --- a/dev-packages/node-integration-tests/suites/sessions/errored-session-aggregate/test.ts +++ b/dev-packages/node-integration-tests/suites/sessions/errored-session-aggregate/test.ts @@ -1,10 +1,11 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -afterEach(() => { +afterAll(() => { cleanupChildProcesses(); }); -test('should aggregate successful, crashed and erroneous sessions', done => { +test('should aggregate successful, crashed and erroneous sessions', async () => { const runner = createRunner(__dirname, '..', 'server.ts') .ignore('transaction', 'event') .unignore('sessions') @@ -20,9 +21,10 @@ test('should aggregate successful, crashed and erroneous sessions', done => { ], }, }) - .start(done); + .start(); runner.makeRequest('get', '/test/success'); runner.makeRequest('get', '/test/error_handled'); runner.makeRequest('get', '/test/error_unhandled', { expectError: true }); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/sessions/exited-session-aggregate/test.ts b/dev-packages/node-integration-tests/suites/sessions/exited-session-aggregate/test.ts index 465761e76224..228ee9a98643 100644 --- a/dev-packages/node-integration-tests/suites/sessions/exited-session-aggregate/test.ts +++ b/dev-packages/node-integration-tests/suites/sessions/exited-session-aggregate/test.ts @@ -1,10 +1,11 @@ +import { afterAll, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -afterEach(() => { +afterAll(() => { cleanupChildProcesses(); }); -test('should aggregate successful sessions', done => { +test('should aggregate successful sessions', async () => { const runner = createRunner(__dirname, '..', 'server.ts') .ignore('transaction', 'event') .unignore('sessions') @@ -18,9 +19,10 @@ test('should aggregate successful sessions', done => { ], }, }) - .start(done); + .start(); runner.makeRequest('get', '/test/success'); runner.makeRequest('get', '/test/success_next'); runner.makeRequest('get', '/test/success_slow'); + await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/ai/test.ts b/dev-packages/node-integration-tests/suites/tracing/ai/test.ts index bc263e9fc610..6263d2d26a05 100644 --- a/dev-packages/node-integration-tests/suites/tracing/ai/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/ai/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // `ai` SDK only support Node 18+ @@ -6,7 +7,7 @@ describe('ai', () => { cleanupChildProcesses(); }); - test('creates ai related spans', done => { + test('creates ai related spans', async () => { const EXPECTED_TRANSACTION = { transaction: 'main', spans: expect.arrayContaining([ @@ -125,6 +126,6 @@ describe('ai', () => { ]), }; - createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + await createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start().completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts b/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts index 7a3eb6414237..43ea3d2c8f35 100644 --- a/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts @@ -1,8 +1,9 @@ import type { TransactionEvent } from '@sentry/core'; +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time. -jest.setTimeout(90_000); +vi.setConfig({ testTimeout: 90_000 }); const EXPECTED_MESSAGE_SPAN_PRODUCER = expect.objectContaining({ op: 'message', @@ -31,8 +32,8 @@ describe('amqplib auto-instrumentation', () => { cleanupChildProcesses(); }); - test('should be able to send and receive messages', done => { - createRunner(__dirname, 'scenario-message.ts') + test('should be able to send and receive messages', async () => { + await createRunner(__dirname, 'scenario-message.ts') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['Time to start RabbitMQ'], @@ -50,6 +51,7 @@ describe('amqplib auto-instrumentation', () => { expect(transaction.contexts?.trace).toMatchObject(EXPECTED_MESSAGE_SPAN_CONSUMER); }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts index 46e05acf940e..c9289efbde8e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; // Graphql Instrumentation emits some spans by default on server start @@ -6,7 +7,7 @@ const EXPECTED_START_SERVER_TRANSACTION = { }; describe('GraphQL/Apollo Tests', () => { - test('should instrument GraphQL queries used from Apollo Server.', done => { + test('should instrument GraphQL queries used from Apollo Server.', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -23,13 +24,14 @@ describe('GraphQL/Apollo Tests', () => { ]), }; - createRunner(__dirname, 'scenario-query.js') + await createRunner(__dirname, 'scenario-query.js') .expect({ transaction: EXPECTED_START_SERVER_TRANSACTION }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); - test('should instrument GraphQL mutations used from Apollo Server.', done => { + test('should instrument GraphQL mutations used from Apollo Server.', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -47,9 +49,10 @@ describe('GraphQL/Apollo Tests', () => { ]), }; - createRunner(__dirname, 'scenario-mutation.js') + await createRunner(__dirname, 'scenario-mutation.js') .expect({ transaction: EXPECTED_START_SERVER_TRANSACTION }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/connect/test.ts b/dev-packages/node-integration-tests/suites/tracing/connect/test.ts index a416656f6355..8b03de6e6a37 100644 --- a/dev-packages/node-integration-tests/suites/tracing/connect/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/connect/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('connect auto-instrumentation', () => { @@ -35,26 +36,27 @@ describe('connect auto-instrumentation', () => { }, }; - test('CJS - should auto-instrument `connect` package.', done => { - createRunner(__dirname, 'scenario.js') - .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done) - .makeRequest('get', '/'); + test('CJS - should auto-instrument `connect` package.', async () => { + const runner = createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(); + runner.makeRequest('get', '/'); + await runner.completed(); }); - test('CJS - should capture errors in `connect` middleware.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should capture errors in `connect` middleware.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .ignore('transaction') .expect({ event: EXPECTED_EVENT }) - .start(done) - .makeRequest('get', '/error'); + .start(); + runner.makeRequest('get', '/error'); + await runner.completed(); }); - test('CJS - should report errored transactions.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should report errored transactions.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .ignore('event') .expect({ transaction: { transaction: 'GET /error' } }) - .start(done) - .makeRequest('get', '/error'); + .start(); + runner.makeRequest('get', '/error'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/dataloader/test.ts b/dev-packages/node-integration-tests/suites/tracing/dataloader/test.ts index 27a2511f1a6e..bd495ea24a7a 100644 --- a/dev-packages/node-integration-tests/suites/tracing/dataloader/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/dataloader/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('dataloader auto-instrumentation', () => { @@ -31,10 +32,9 @@ describe('dataloader auto-instrumentation', () => { ]), }; - test('should auto-instrument `dataloader` package.', done => { - createRunner(__dirname, 'scenario.js') - .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done) - .makeRequest('get', '/'); + test('should auto-instrument `dataloader` package.', async () => { + const runner = createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(); + runner.makeRequest('get', '/'); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts b/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts index f669f50f5d7b..f450d2150e31 100644 --- a/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts @@ -1,12 +1,13 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; import { createTestServer } from '../../../utils/server'; -test('adds current transaction name to baggage when the txn name is high-quality', done => { +test('adds current transaction name to baggage when the txn name is high-quality', async () => { expect.assertions(5); let traceId: string | undefined; - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { const baggageItems = getBaggageHeaderItems(headers); traceId = baggageItems.find(item => item.startsWith('sentry-trace_id='))?.split('=')[1] as string; @@ -47,21 +48,22 @@ test('adds current transaction name to baggage when the txn name is high-quality 'sentry-transaction=updated-name-2', ]); }) + .start(); + + await createRunner(__dirname, 'scenario-headers.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: {}, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario-headers.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: {}, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); -test('adds current transaction name to trace envelope header when the txn name is high-quality', done => { +test('adds current transaction name to trace envelope header when the txn name is high-quality', async () => { expect.assertions(4); - createRunner(__dirname, 'scenario-events.ts') + await createRunner(__dirname, 'scenario-events.ts') .expectHeader({ event: { trace: { @@ -117,7 +119,8 @@ test('adds current transaction name to trace envelope header when the txn name i }, }, }) - .start(done); + .start() + .completed(); }); function getBaggageHeaderItems(headers: Record) { diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts index 105722a43239..bba04c788282 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for error event during active unsampled span is correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for error event during active unsampled span is correct', async () => { + await createRunner(__dirname, 'scenario.ts') .ignore('transaction') .expectHeader({ event: { @@ -16,5 +17,6 @@ test('envelope header for error event during active unsampled span is correct', }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts index 51d62deb75af..f11defc490c8 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for error event during active span is correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for error event during active span is correct', async () => { + await createRunner(__dirname, 'scenario.ts') .ignore('transaction') .expectHeader({ event: { @@ -17,5 +18,6 @@ test('envelope header for error event during active span is correct', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts index efb1ce409efd..9d39209d456f 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for error events is correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for error events is correct', async () => { + await createRunner(__dirname, 'scenario.ts') .expectHeader({ event: { trace: { @@ -12,5 +13,6 @@ test('envelope header for error events is correct', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/sampleRate-propagation/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/sampleRate-propagation/test.ts index 55223beff4f6..63db6ff4e820 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/sampleRate-propagation/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/sampleRate-propagation/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('tracesSampleRate propagation', () => { @@ -7,8 +8,8 @@ describe('tracesSampleRate propagation', () => { const traceId = '12345678123456781234567812345678'; - test('uses sample rate from incoming baggage header in trace envelope item', done => { - createRunner(__dirname, 'server.js') + test('uses sample rate from incoming baggage header in trace envelope item', async () => { + const runner = createRunner(__dirname, 'server.js') .expectHeader({ transaction: { trace: { @@ -20,12 +21,13 @@ describe('tracesSampleRate propagation', () => { }, }, }) - .start(done) - .makeRequest('get', '/test', { - headers: { - 'sentry-trace': `${traceId}-1234567812345678-1`, - baggage: `sentry-sample_rate=0.05,sentry-trace_id=${traceId},sentry-sampled=true,sentry-transaction=myTransaction,sentry-sample_rand=0.42`, - }, - }); + .start(); + runner.makeRequest('get', '/test', { + headers: { + 'sentry-trace': `${traceId}-1234567812345678-1`, + baggage: `sentry-sample_rate=0.05,sentry-trace_id=${traceId},sentry-sampled=true,sentry-transaction=myTransaction,sentry-sample_rand=0.42`, + }, + }); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts index 15088157994d..f4bb6e2b4293 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for transaction event of route correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for transaction event of route correct', async () => { + await createRunner(__dirname, 'scenario.ts') .expectHeader({ transaction: { trace: { @@ -16,5 +17,6 @@ test('envelope header for transaction event of route correct', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts index 8b5eb84392c9..c4ed5ae4983f 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for transaction event with source=url correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for transaction event with source=url correct', async () => { + await createRunner(__dirname, 'scenario.ts') .expectHeader({ transaction: { trace: { @@ -15,5 +16,6 @@ test('envelope header for transaction event with source=url correct', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts index 1f26a45ffcac..104761d52c86 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts @@ -1,7 +1,8 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; -test('envelope header for transaction event is correct', done => { - createRunner(__dirname, 'scenario.ts') +test('envelope header for transaction event is correct', async () => { + await createRunner(__dirname, 'scenario.ts') .expectHeader({ transaction: { trace: { @@ -16,5 +17,6 @@ test('envelope header for transaction event is correct', done => { }, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/genericPool/test.ts b/dev-packages/node-integration-tests/suites/tracing/genericPool/test.ts index 114d3a909188..42f2a3603f95 100644 --- a/dev-packages/node-integration-tests/suites/tracing/genericPool/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/genericPool/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('genericPool auto instrumentation', () => { @@ -5,7 +6,7 @@ describe('genericPool auto instrumentation', () => { cleanupChildProcesses(); }); - test('should auto-instrument `genericPool` package when calling pool.require()', done => { + test('should auto-instrument `genericPool` package when calling pool.require()', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -29,6 +30,6 @@ describe('genericPool auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + await createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start().completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/hapi/test.ts b/dev-packages/node-integration-tests/suites/tracing/hapi/test.ts index 4bd995777248..e783c77e2fc5 100644 --- a/dev-packages/node-integration-tests/suites/tracing/hapi/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/hapi/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('hapi auto-instrumentation', () => { @@ -35,27 +36,27 @@ describe('hapi auto-instrumentation', () => { }, }; - test('CJS - should auto-instrument `@hapi/hapi` package.', done => { - createRunner(__dirname, 'scenario.js') - .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done) - .makeRequest('get', '/'); + test('CJS - should auto-instrument `@hapi/hapi` package.', async () => { + const runner = createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(); + runner.makeRequest('get', '/'); + await runner.completed(); }); - test('CJS - should handle returned plain errors in routes.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should handle returned plain errors in routes.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .expect({ transaction: { transaction: 'GET /error', }, }) .expect({ event: EXPECTED_ERROR_EVENT }) - .start(done) - .makeRequest('get', '/error', { expectError: true }); + .start(); + runner.makeRequest('get', '/error', { expectError: true }); + await runner.completed(); }); - test('CJS - should assign parameterized transactionName to error.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should assign parameterized transactionName to error.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .expect({ event: { ...EXPECTED_ERROR_EVENT, @@ -63,31 +64,34 @@ describe('hapi auto-instrumentation', () => { }, }) .ignore('transaction') - .start(done) - .makeRequest('get', '/error/123', { expectError: true }); + .start(); + runner.makeRequest('get', '/error/123', { expectError: true }); + await runner.completed(); }); - test('CJS - should handle returned Boom errors in routes.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should handle returned Boom errors in routes.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .expect({ transaction: { transaction: 'GET /boom-error', }, }) .expect({ event: EXPECTED_ERROR_EVENT }) - .start(done) - .makeRequest('get', '/boom-error', { expectError: true }); + .start(); + runner.makeRequest('get', '/boom-error', { expectError: true }); + await runner.completed(); }); - test('CJS - should handle promise rejections in routes.', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should handle promise rejections in routes.', async () => { + const runner = createRunner(__dirname, 'scenario.js') .expect({ transaction: { transaction: 'GET /promise-error', }, }) .expect({ event: EXPECTED_ERROR_EVENT }) - .start(done) - .makeRequest('get', '/promise-error', { expectError: true }); + .start(); + runner.makeRequest('get', '/promise-error', { expectError: true }); + await runner.completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-basic/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-basic/test.ts index 006190864fe6..1b599def6be6 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-basic/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-basic/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('captures spans for outgoing fetch requests', done => { +test('captures spans for outgoing fetch requests', async () => { expect.assertions(3); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', () => { // Just ensure we're called expect(true).toBe(true); @@ -17,32 +18,33 @@ test('captures spans for outgoing fetch requests', done => { }, 404, ) + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: { + transaction: 'test_transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: expect.stringMatching(/GET .*\/api\/v0/), + op: 'http.client', + origin: 'auto.http.otel.node_fetch', + status: 'ok', + }), + expect.objectContaining({ + description: expect.stringMatching(/GET .*\/api\/v1/), + op: 'http.client', + origin: 'auto.http.otel.node_fetch', + status: 'not_found', + data: expect.objectContaining({ + 'http.response.status_code': 404, + }), + }), + ]), + }, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: { - transaction: 'test_transaction', - spans: expect.arrayContaining([ - expect.objectContaining({ - description: expect.stringMatching(/GET .*\/api\/v0/), - op: 'http.client', - origin: 'auto.http.otel.node_fetch', - status: 'ok', - }), - expect.objectContaining({ - description: expect.stringMatching(/GET .*\/api\/v1/), - op: 'http.client', - origin: 'auto.http.otel.node_fetch', - status: 'not_found', - data: expect.objectContaining({ - 'http.response.status_code': 404, - }), - }), - ]), - }, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts index 12bb11727228..797047080283 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts @@ -1,53 +1,55 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('strips and handles query params in spans of outgoing fetch requests', done => { +test('strips and handles query params in spans of outgoing fetch requests', async () => { expect.assertions(4); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0/users', () => { // Just ensure we're called expect(true).toBe(true); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: txn => { - expect(txn.transaction).toEqual('test_transaction'); - expect(txn.spans).toHaveLength(1); - expect(txn.spans?.[0]).toMatchObject({ - data: { - url: `${SERVER_URL}/api/v0/users`, - 'url.full': `${SERVER_URL}/api/v0/users?id=1`, - 'url.path': '/api/v0/users', - 'url.query': '?id=1', - 'url.scheme': 'http', - 'http.query': 'id=1', - 'http.request.method': 'GET', - 'http.request.method_original': 'GET', - 'http.response.header.content-length': 0, - 'http.response.status_code': 200, - 'network.peer.address': '::1', - 'network.peer.port': expect.any(Number), - 'otel.kind': 'CLIENT', - 'server.port': expect.any(Number), - 'user_agent.original': 'node', - 'sentry.op': 'http.client', - 'sentry.origin': 'auto.http.otel.node_fetch', - 'server.address': 'localhost', - }, - description: `GET ${SERVER_URL}/api/v0/users`, - op: 'http.client', - origin: 'auto.http.otel.node_fetch', - status: 'ok', - parent_span_id: txn.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: txn.contexts?.trace?.trace_id, - }); + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: txn => { + expect(txn.transaction).toEqual('test_transaction'); + expect(txn.spans).toHaveLength(1); + expect(txn.spans?.[0]).toMatchObject({ + data: { + url: `${SERVER_URL}/api/v0/users`, + 'url.full': `${SERVER_URL}/api/v0/users?id=1`, + 'url.path': '/api/v0/users', + 'url.query': '?id=1', + 'url.scheme': 'http', + 'http.query': 'id=1', + 'http.request.method': 'GET', + 'http.request.method_original': 'GET', + 'http.response.header.content-length': 0, + 'http.response.status_code': 200, + 'network.peer.address': '::1', + 'network.peer.port': expect.any(Number), + 'otel.kind': 'CLIENT', + 'server.port': expect.any(Number), + 'user_agent.original': 'node', + 'sentry.op': 'http.client', + 'sentry.origin': 'auto.http.otel.node_fetch', + 'server.address': 'localhost', }, - }) - .start(closeTestServer); - }); + description: `GET ${SERVER_URL}/api/v0/users`, + op: 'http.client', + origin: 'auto.http.otel.node_fetch', + status: 'ok', + parent_span_id: txn.contexts?.trace?.span_id, + span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: txn.contexts?.trace?.trace_id, + }); + }, + }) + .start() + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-basic/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-basic/test.ts index bb642baf0e1c..bb21f7def8f0 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-basic/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-basic/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('captures spans for outgoing http requests', done => { +test('captures spans for outgoing http requests', async () => { expect.assertions(3); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', () => { // Just ensure we're called expect(true).toBe(true); @@ -17,32 +18,33 @@ test('captures spans for outgoing http requests', done => { }, 404, ) + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: { + transaction: 'test_transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: expect.stringMatching(/GET .*\/api\/v0/), + op: 'http.client', + origin: 'auto.http.otel.http', + status: 'ok', + }), + expect.objectContaining({ + description: expect.stringMatching(/GET .*\/api\/v1/), + op: 'http.client', + origin: 'auto.http.otel.http', + status: 'not_found', + data: expect.objectContaining({ + 'http.response.status_code': 404, + }), + }), + ]), + }, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: { - transaction: 'test_transaction', - spans: expect.arrayContaining([ - expect.objectContaining({ - description: expect.stringMatching(/GET .*\/api\/v0/), - op: 'http.client', - origin: 'auto.http.otel.http', - status: 'ok', - }), - expect.objectContaining({ - description: expect.stringMatching(/GET .*\/api\/v1/), - op: 'http.client', - origin: 'auto.http.otel.http', - status: 'not_found', - data: expect.objectContaining({ - 'http.response.status_code': 404, - }), - }), - ]), - }, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts index 37b638635eb9..ebe2eff07013 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts @@ -1,53 +1,56 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('strips and handles query params in spans of outgoing http requests', done => { +test('strips and handles query params in spans of outgoing http requests', async () => { expect.assertions(4); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0/users', () => { // Just ensure we're called expect(true).toBe(true); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: txn => { - expect(txn.transaction).toEqual('test_transaction'); - expect(txn.spans).toHaveLength(1); - expect(txn.spans?.[0]).toMatchObject({ - data: { - url: `${SERVER_URL}/api/v0/users`, - 'http.url': `${SERVER_URL}/api/v0/users?id=1`, - 'http.target': '/api/v0/users?id=1', - 'http.flavor': '1.1', - 'http.host': expect.stringMatching(/localhost:\d+$/), - 'http.method': 'GET', - 'http.query': 'id=1', - 'http.response.status_code': 200, - 'http.response_content_length_uncompressed': 0, - 'http.status_code': 200, - 'http.status_text': 'OK', - 'net.peer.ip': '::1', - 'net.peer.name': 'localhost', - 'net.peer.port': expect.any(Number), - 'net.transport': 'ip_tcp', - 'otel.kind': 'CLIENT', - 'sentry.op': 'http.client', - 'sentry.origin': 'auto.http.otel.http', - }, - description: `GET ${SERVER_URL}/api/v0/users`, - op: 'http.client', - origin: 'auto.http.otel.http', - status: 'ok', - parent_span_id: txn.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: txn.contexts?.trace?.trace_id, - }); + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: txn => { + expect(txn.transaction).toEqual('test_transaction'); + expect(txn.spans).toHaveLength(1); + expect(txn.spans?.[0]).toMatchObject({ + data: { + url: `${SERVER_URL}/api/v0/users`, + 'http.url': `${SERVER_URL}/api/v0/users?id=1`, + 'http.target': '/api/v0/users?id=1', + 'http.flavor': '1.1', + 'http.host': expect.stringMatching(/localhost:\d+$/), + 'http.method': 'GET', + 'http.query': 'id=1', + 'http.response.status_code': 200, + 'http.response_content_length_uncompressed': 0, + 'http.status_code': 200, + 'http.status_text': 'OK', + 'net.peer.ip': '::1', + 'net.peer.name': 'localhost', + 'net.peer.port': expect.any(Number), + 'net.transport': 'ip_tcp', + 'otel.kind': 'CLIENT', + 'sentry.op': 'http.client', + 'sentry.origin': 'auto.http.otel.http', }, - }) - .start(closeTestServer); - }); + description: `GET ${SERVER_URL}/api/v0/users`, + op: 'http.client', + origin: 'auto.http.otel.http', + status: 'ok', + parent_span_id: txn.contexts?.trace?.span_id, + span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: txn.contexts?.trace?.trace_id, + }); + }, + }) + .start() + .completed(); + + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts b/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts index 83f36fd7a9ef..6e4ad622ea26 100644 --- a/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; import { createTestServer } from '../../../utils/server'; @@ -6,15 +7,14 @@ describe('httpIntegration', () => { cleanupChildProcesses(); }); - test('allows to pass instrumentation options to integration', done => { + test('allows to pass instrumentation options to integration', async () => { // response shape seems different on Node 14, so we skip this there const nodeMajorVersion = Number(process.versions.node.split('.')[0]); if (nodeMajorVersion <= 14) { - done(); return; } - createRunner(__dirname, 'server.js') + const runner = createRunner(__dirname, 'server.js') .expect({ transaction: { contexts: { @@ -50,12 +50,13 @@ describe('httpIntegration', () => { }, }, }) - .start(done) - .makeRequest('get', '/test'); + .start(); + runner.makeRequest('get', '/test'); + await runner.completed(); }); - test('allows to pass experimental config through to integration', done => { - createRunner(__dirname, 'server-experimental.js') + test('allows to pass experimental config through to integration', async () => { + const runner = createRunner(__dirname, 'server-experimental.js') .expect({ transaction: { contexts: { @@ -73,12 +74,13 @@ describe('httpIntegration', () => { }, }, }) - .start(done) - .makeRequest('get', '/test'); + .start(); + runner.makeRequest('get', '/test'); + await runner.completed(); }); describe("doesn't create a root span for incoming requests ignored via `ignoreIncomingRequests`", () => { - test('via the url param', done => { + test('via the url param', async () => { const runner = createRunner(__dirname, 'server-ignoreIncomingRequests.js') .expect({ transaction: { @@ -97,13 +99,14 @@ describe('httpIntegration', () => { transaction: 'GET /test', }, }) - .start(done); + .start(); runner.makeRequest('get', '/liveness'); // should be ignored runner.makeRequest('get', '/test'); + await runner.completed(); }); - test('via the request param', done => { + test('via the request param', async () => { const runner = createRunner(__dirname, 'server-ignoreIncomingRequests.js') .expect({ transaction: { @@ -122,64 +125,68 @@ describe('httpIntegration', () => { transaction: 'GET /test', }, }) - .start(done); + .start(); runner.makeRequest('post', '/readiness'); // should be ignored runner.makeRequest('get', '/test'); + await runner.completed(); }); }); describe("doesn't create child spans or breadcrumbs for outgoing requests ignored via `ignoreOutgoingRequests`", () => { - test('via the url param', done => { - createTestServer(done) + test('via the url param', async () => { + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/blockUrl', () => {}, 200) .get('/pass', () => {}, 200) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'server-ignoreOutgoingRequests.js') - .withEnv({ SERVER_URL }) - .expect({ - transaction: event => { - expect(event.transaction).toBe('GET /testUrl'); - - const requestSpans = event.spans?.filter(span => span.op === 'http.client'); - expect(requestSpans).toHaveLength(1); - expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`); - - const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http'); - expect(breadcrumbs).toHaveLength(1); - expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`); - }, - }) - .start(closeTestServer) - .makeRequest('get', '/testUrl'); - }); + .start(); + + const runner = createRunner(__dirname, 'server-ignoreOutgoingRequests.js') + .withEnv({ SERVER_URL }) + .expect({ + transaction: event => { + expect(event.transaction).toBe('GET /testUrl'); + + const requestSpans = event.spans?.filter(span => span.op === 'http.client'); + expect(requestSpans).toHaveLength(1); + expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`); + + const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http'); + expect(breadcrumbs).toHaveLength(1); + expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`); + }, + }) + .start(closeTestServer); + runner.makeRequest('get', '/testUrl'); + await runner.completed(); + closeTestServer(); }); - test('via the request param', done => { - createTestServer(done) + test('via the request param', async () => { + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/blockUrl', () => {}, 200) .get('/pass', () => {}, 200) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'server-ignoreOutgoingRequests.js') - .withEnv({ SERVER_URL }) - .expect({ - transaction: event => { - expect(event.transaction).toBe('GET /testRequest'); - - const requestSpans = event.spans?.filter(span => span.op === 'http.client'); - expect(requestSpans).toHaveLength(1); - expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`); - - const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http'); - expect(breadcrumbs).toHaveLength(1); - expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`); - }, - }) - .start(closeTestServer) - .makeRequest('get', '/testRequest'); - }); + .start(); + + const runner = createRunner(__dirname, 'server-ignoreOutgoingRequests.js') + .withEnv({ SERVER_URL }) + .expect({ + transaction: event => { + expect(event.transaction).toBe('GET /testRequest'); + + const requestSpans = event.spans?.filter(span => span.op === 'http.client'); + expect(requestSpans).toHaveLength(1); + expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`); + + const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http'); + expect(breadcrumbs).toHaveLength(1); + expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`); + }, + }) + .start(); + runner.makeRequest('get', '/testRequest'); + + await runner.completed(); + closeTestServer(); }); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts index f818af1d676a..dd441405392a 100644 --- a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts @@ -1,15 +1,16 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(60_000); +vi.setConfig({ testTimeout: 60_000 }); describe('kafkajs', () => { afterAll(() => { cleanupChildProcesses(); }); - test('traces producers and consumers', done => { - createRunner(__dirname, 'scenario.js') + test('traces producers and consumers', async () => { + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['9092'], @@ -50,6 +51,7 @@ describe('kafkajs', () => { }, }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts index 3ededda4f162..396937a52541 100644 --- a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts @@ -1,13 +1,13 @@ +import { describe, expect, test, vi } from 'vitest'; import { createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(90000); +vi.setConfig({ testTimeout: 90_000 }); describe('knex auto instrumentation', () => { // Update this if another knex version is installed const KNEX_VERSION = '2.5.1'; - test('should auto-instrument `knex` package when using `pg` client', done => { + test('should auto-instrument `knex` package when using `pg` client', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -60,13 +60,14 @@ describe('knex auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-withPostgres.js') + await createRunner(__dirname, 'scenario-withPostgres.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port 5432'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); - test('should auto-instrument `knex` package when using `mysql2` client', done => { + test('should auto-instrument `knex` package when using `mysql2` client', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -121,9 +122,10 @@ describe('knex auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-withMysql2.js') + await createRunner(__dirname, 'scenario-withMysql2.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port: 3306'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/linking/test.ts b/dev-packages/node-integration-tests/suites/tracing/linking/test.ts index 57f68c1d258f..a0874274d2bd 100644 --- a/dev-packages/node-integration-tests/suites/tracing/linking/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/linking/test.ts @@ -1,10 +1,11 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; describe('span links', () => { - test('should link spans by adding "links" to span options', done => { + test('should link spans by adding "links" to span options', async () => { let span1_traceId: string, span1_spanId: string; - createRunner(__dirname, 'scenario-span-options.ts') + await createRunner(__dirname, 'scenario-span-options.ts') .expect({ transaction: event => { expect(event.transaction).toBe('parent1'); @@ -28,13 +29,14 @@ describe('span links', () => { ]); }, }) - .start(done); + .start() + .completed(); }); - test('should link spans with addLink() in trace context', done => { + test('should link spans with addLink() in trace context', async () => { let span1_traceId: string, span1_spanId: string; - createRunner(__dirname, 'scenario-addLink.ts') + await createRunner(__dirname, 'scenario-addLink.ts') .expect({ transaction: event => { expect(event.transaction).toBe('span1'); @@ -60,13 +62,14 @@ describe('span links', () => { ]); }, }) - .start(done); + .start() + .completed(); }); - test('should link spans with addLinks() in trace context', done => { + test('should link spans with addLinks() in trace context', async () => { let span1_traceId: string, span1_spanId: string, span2_traceId: string, span2_spanId: string; - createRunner(__dirname, 'scenario-addLinks.ts') + await createRunner(__dirname, 'scenario-addLinks.ts') .expect({ transaction: event => { expect(event.transaction).toBe('span1'); @@ -107,11 +110,12 @@ describe('span links', () => { ]); }, }) - .start(done); + .start() + .completed(); }); - test('should link spans with addLink() in nested startSpan() calls', done => { - createRunner(__dirname, 'scenario-addLink-nested.ts') + test('should link spans with addLink() in nested startSpan() calls', async () => { + await createRunner(__dirname, 'scenario-addLink-nested.ts') .expect({ transaction: event => { expect(event.transaction).toBe('parent1'); @@ -146,11 +150,12 @@ describe('span links', () => { ]); }, }) - .start(done); + .start() + .completed(); }); - test('should link spans with addLinks() in nested startSpan() calls', done => { - createRunner(__dirname, 'scenario-addLinks-nested.ts') + test('should link spans with addLinks() in nested startSpan() calls', async () => { + await createRunner(__dirname, 'scenario-addLinks-nested.ts') .expect({ transaction: event => { expect(event.transaction).toBe('parent1'); @@ -182,6 +187,7 @@ describe('span links', () => { ]); }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/lru-memoizer/test.ts b/dev-packages/node-integration-tests/suites/tracing/lru-memoizer/test.ts index 050505e4055e..7caccfc97144 100644 --- a/dev-packages/node-integration-tests/suites/tracing/lru-memoizer/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/lru-memoizer/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('lru-memoizer', () => { @@ -5,8 +6,8 @@ describe('lru-memoizer', () => { cleanupChildProcesses(); }); - test('keeps outer context inside the memoized inner functions', done => { - createRunner(__dirname, 'scenario.js') + test('keeps outer context inside the memoized inner functions', async () => { + await createRunner(__dirname, 'scenario.js') // We expect only one transaction and nothing else. // A failed test will result in an error event being sent to Sentry. // Which will fail this suite. @@ -24,6 +25,7 @@ describe('lru-memoizer', () => { }, }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/maxSpans/test.ts b/dev-packages/node-integration-tests/suites/tracing/maxSpans/test.ts index b705bfc71ea4..31b0af762d9a 100644 --- a/dev-packages/node-integration-tests/suites/tracing/maxSpans/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/maxSpans/test.ts @@ -1,18 +1,20 @@ import type { SpanJSON } from '@sentry/core'; +import { expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; -test('it limits spans to 1000', done => { +test('it limits spans to 1000', async () => { const expectedSpans: SpanJSON[] = []; for (let i = 0; i < 1000; i++) { expectedSpans.push(expect.objectContaining({ description: `child ${i}` })); } - createRunner(__dirname, 'scenario.ts') + await createRunner(__dirname, 'scenario.ts') .expect({ transaction: { transaction: 'parent', spans: expectedSpans, }, }) - .start(done); + .start() + .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts index d4447255bf51..7c6612a0f4f7 100644 --- a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('errors in TwP mode have same trace in trace context and getTraceData()', () => { @@ -6,8 +7,8 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() }); // In a request handler, the spanId is consistent inside of the request - test('in incoming request', done => { - createRunner(__dirname, 'server.js') + test('in incoming request', async () => { + const runner = createRunner(__dirname, 'server.js') .expect({ event: event => { const { contexts } = event; @@ -27,13 +28,14 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() expect(traceData.metaTags).not.toContain('sentry-sampled='); }, }) - .start(done) - .makeRequest('get', '/test'); + .start(); + runner.makeRequest('get', '/test'); + await runner.completed(); }); // Outside of a request handler, the spanId is random - test('outside of a request handler', done => { - createRunner(__dirname, 'no-server.js') + test('outside of a request handler', async () => { + await createRunner(__dirname, 'no-server.js') .expect({ event: event => { const { contexts } = event; @@ -59,6 +61,7 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() expect(traceData.metaTags).not.toContain('sentry-sampled='); }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/test.ts index cca1f34321a2..c719a82ceb36 100644 --- a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('getTraceMetaTags', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts index 0d61adf18913..bd617f021778 100644 --- a/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('getTraceMetaTags', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts b/dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts index 92fc857ed4e8..60c5d56e1779 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts @@ -1,5 +1,6 @@ import { MongoMemoryServer } from 'mongodb-memory-server-global'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('MongoDB experimental Test', () => { @@ -170,7 +171,7 @@ describe('MongoDB experimental Test', () => { ], }; - test('CJS - should auto-instrument `mongodb` package.', done => { - createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + test('CJS - should auto-instrument `mongodb` package.', async () => { + await createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start().completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/mongoose/test.ts b/dev-packages/node-integration-tests/suites/tracing/mongoose/test.ts index 30eeb62ffe31..ad423354a4c9 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mongoose/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mongoose/test.ts @@ -1,5 +1,6 @@ import { MongoMemoryServer } from 'mongodb-memory-server-global'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('Mongoose experimental Test', () => { @@ -45,7 +46,7 @@ describe('Mongoose experimental Test', () => { ]), }; - test('CJS - should auto-instrument `mongoose` package.', done => { - createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + test('CJS - should auto-instrument `mongoose` package.', async () => { + await createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start().completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/mysql/test.ts b/dev-packages/node-integration-tests/suites/tracing/mysql/test.ts index 530349ae3fb7..adb35f1c0025 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mysql/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mysql/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('mysql auto instrumentation', () => { @@ -5,7 +6,7 @@ describe('mysql auto instrumentation', () => { cleanupChildProcesses(); }); - test('should auto-instrument `mysql` package when using connection.connect()', done => { + test('should auto-instrument `mysql` package when using connection.connect()', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -32,10 +33,13 @@ describe('mysql auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-withConnect.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + await createRunner(__dirname, 'scenario-withConnect.js') + .expect({ transaction: EXPECTED_TRANSACTION }) + .start() + .completed(); }); - test('should auto-instrument `mysql` package when using query without callback', done => { + test('should auto-instrument `mysql` package when using query without callback', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -62,10 +66,13 @@ describe('mysql auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-withoutCallback.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + await createRunner(__dirname, 'scenario-withoutCallback.js') + .expect({ transaction: EXPECTED_TRANSACTION }) + .start() + .completed(); }); - test('should auto-instrument `mysql` package without connection.connect()', done => { + test('should auto-instrument `mysql` package without connection.connect()', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -92,6 +99,9 @@ describe('mysql auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-withoutConnect.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); + await createRunner(__dirname, 'scenario-withoutConnect.js') + .expect({ transaction: EXPECTED_TRANSACTION }) + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts index 60070308c7db..d9102d559002 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts @@ -1,14 +1,15 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 75_000 }); describe('mysql2 auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should auto-instrument `mysql` package without connection.connect()', done => { + test('should auto-instrument `mysql` package without connection.connect()', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -35,9 +36,10 @@ describe('mysql2 auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario.js') + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port: 3306'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts b/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts index f2549c70eb90..ed964a6bdce0 100644 --- a/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts @@ -1,10 +1,11 @@ +import { describe, expect, test, vi } from 'vitest'; import { createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 575 }); describe('postgres auto instrumentation', () => { - test('should auto-instrument `pg` package', done => { + test('should auto-instrument `pg` package', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -48,9 +49,10 @@ describe('postgres auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario.js') + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port 5432'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts index da47ef8bc415..f1ecece17bc0 100644 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts @@ -1,15 +1,16 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 75_000 }); afterAll(() => { cleanupChildProcesses(); }); describe('Prisma ORM v5 Tests', () => { - test('CJS - should instrument PostgreSQL queries from Prisma ORM', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should instrument PostgreSQL queries from Prisma ORM', async () => { + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port 5432'], @@ -76,6 +77,7 @@ describe('Prisma ORM v5 Tests', () => { ); }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts index 10cb5b15c95c..418ae6d12f2f 100644 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts @@ -1,16 +1,17 @@ import type { SpanJSON } from '@sentry/core'; +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 75_000 }); afterAll(() => { cleanupChildProcesses(); }); describe('Prisma ORM v6 Tests', () => { - test('CJS - should instrument PostgreSQL queries from Prisma ORM', done => { - createRunner(__dirname, 'scenario.js') + test('CJS - should instrument PostgreSQL queries from Prisma ORM', async () => { + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port 5432'], @@ -92,6 +93,7 @@ describe('Prisma ORM v6 Tests', () => { }); }, }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts b/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts index 2b93c4d772bc..b97eecd31136 100644 --- a/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts @@ -1,14 +1,15 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(90000); +vi.setConfig({ testTimeout: 90_000 }); describe('redis cache auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should not add cache spans when key is not prefixed', done => { + test('should not add cache spans when key is not prefixed', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ @@ -39,13 +40,14 @@ describe('redis cache auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-ioredis.js') + await createRunner(__dirname, 'scenario-ioredis.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port=6379'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); - test('should create cache spans for prefixed keys (ioredis)', done => { + test('should create cache spans for prefixed keys (ioredis)', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ @@ -137,13 +139,14 @@ describe('redis cache auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-ioredis.js') + await createRunner(__dirname, 'scenario-ioredis.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port=6379'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); - test('should create cache spans for prefixed keys (redis-4)', done => { + test('should create cache spans for prefixed keys (redis-4)', async () => { const EXPECTED_REDIS_CONNECT = { transaction: 'redis-connect', }; @@ -227,10 +230,11 @@ describe('redis cache auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-redis-4.js') + await createRunner(__dirname, 'scenario-redis-4.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port=6379'] }) .expect({ transaction: EXPECTED_REDIS_CONNECT }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/redis/test.ts b/dev-packages/node-integration-tests/suites/tracing/redis/test.ts index 5a801a2f6a5b..88ae33ce2971 100644 --- a/dev-packages/node-integration-tests/suites/tracing/redis/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/redis/test.ts @@ -1,14 +1,15 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; // When running docker compose, we need a larger timeout, as this takes some time... -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 75_000 }); describe('redis auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should auto-instrument `ioredis` package when using redis.set() and redis.get()', done => { + test('should auto-instrument `ioredis` package when using redis.set() and redis.get()', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ @@ -41,9 +42,10 @@ describe('redis auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario-ioredis.js') + await createRunner(__dirname, 'scenario-ioredis.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['port=6379'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-breadcrumbs/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-breadcrumbs/test.ts index 254d197c85c3..c14a6ab528ac 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-breadcrumbs/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-breadcrumbs/test.ts @@ -1,77 +1,78 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing fetch', () => { - test('outgoing fetch requests create breadcrumbs', done => { - createTestServer(done) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .ensureNoErrorOutput() - .expect({ - event: { - breadcrumbs: [ - { - message: 'manual breadcrumb', - timestamp: expect.any(Number), - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v0`, - status_code: 404, - ADDED_PATH: '/api/v0', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v1`, - status_code: 404, - ADDED_PATH: '/api/v1', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v2`, - status_code: 404, - ADDED_PATH: '/api/v2', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v3`, - status_code: 404, - ADDED_PATH: '/api/v3', - }, - timestamp: expect.any(Number), - type: 'http', - }, - ], - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + test('outgoing fetch requests create breadcrumbs', async () => { + const [SERVER_URL, closeTestServer] = await createTestServer().start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .ensureNoErrorOutput() + .expect({ + event: { + breadcrumbs: [ + { + message: 'manual breadcrumb', + timestamp: expect.any(Number), + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v0`, + status_code: 404, + ADDED_PATH: '/api/v0', }, + timestamp: expect.any(Number), + type: 'http', }, - }) - .start(closeTestServer); - }); + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v1`, + status_code: 404, + ADDED_PATH: '/api/v1', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v2`, + status_code: 404, + ADDED_PATH: '/api/v2', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v3`, + status_code: 404, + ADDED_PATH: '/api/v3', + }, + timestamp: expect.any(Number), + type: 'http', + }, + ], + exception: { + values: [ + { + type: 'Error', + value: 'foo', + }, + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing-no-spans/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing-no-spans/test.ts index 98fc6bd38c52..0da3d7fd6501 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing-no-spans/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing-no-spans/test.ts @@ -1,11 +1,12 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing fetch', () => { - test('outgoing fetch requests are correctly instrumented with tracing & spans are disabled', done => { + test('outgoing fetch requests are correctly instrumented with tracing & spans are disabled', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); @@ -24,24 +25,25 @@ describe('outgoing fetch', () => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .ensureNoErrorOutput() - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .ensureNoErrorOutput() + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer; }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts index 906fa6541dd6..1975199514ff 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts @@ -1,11 +1,12 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing fetch', () => { - test('outgoing fetch requests are correctly instrumented with tracing disabled', done => { + test('outgoing fetch requests are correctly instrumented with tracing disabled', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); @@ -24,24 +25,25 @@ describe('outgoing fetch', () => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .ensureNoErrorOutput() - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .ensureNoErrorOutput() + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts index afe60d27b22a..00da2285f060 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts @@ -1,11 +1,12 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing fetch', () => { - test('outgoing sampled fetch requests without active span are correctly instrumented', done => { + test('outgoing sampled fetch requests without active span are correctly instrumented', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); @@ -24,23 +25,24 @@ describe('outgoing fetch', () => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts index cb85ca98ca0b..b6dcf5e6b116 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts @@ -1,11 +1,12 @@ +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing fetch', () => { - test('outgoing fetch requests are correctly instrumented when not sampled', done => { + test('outgoing fetch requests are correctly instrumented when not sampled', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); @@ -24,23 +25,24 @@ describe('outgoing fetch', () => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-breadcrumbs/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-breadcrumbs/test.ts index 812dbbb4ae60..86d61866ad38 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-breadcrumbs/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-breadcrumbs/test.ts @@ -1,75 +1,76 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('outgoing http requests create breadcrumbs', done => { - createTestServer(done) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .ensureNoErrorOutput() - .expect({ - event: { - breadcrumbs: [ - { - message: 'manual breadcrumb', - timestamp: expect.any(Number), - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v0`, - status_code: 404, - ADDED_PATH: '/api/v0', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v1`, - status_code: 404, - ADDED_PATH: '/api/v1', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v2`, - status_code: 404, - ADDED_PATH: '/api/v2', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v3`, - status_code: 404, - ADDED_PATH: '/api/v3', - }, - timestamp: expect.any(Number), - type: 'http', - }, - ], - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], +test('outgoing http requests create breadcrumbs', async () => { + const [SERVER_URL, closeTestServer] = await createTestServer().start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .ensureNoErrorOutput() + .expect({ + event: { + breadcrumbs: [ + { + message: 'manual breadcrumb', + timestamp: expect.any(Number), + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v0`, + status_code: 404, + ADDED_PATH: '/api/v0', }, + timestamp: expect.any(Number), + type: 'http', }, - }) - .start(closeTestServer); - }); + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v1`, + status_code: 404, + ADDED_PATH: '/api/v1', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v2`, + status_code: 404, + ADDED_PATH: '/api/v2', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v3`, + status_code: 404, + ADDED_PATH: '/api/v3', + }, + timestamp: expect.any(Number), + type: 'http', + }, + ], + exception: { + values: [ + { + type: 'Error', + value: 'foo', + }, + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts index 3ab1090806cb..77b6f10217ed 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('outgoing http requests are correctly instrumented with tracing disabled', done => { +test('outgoing http requests are correctly instrumented with tracing disabled', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); @@ -23,73 +24,74 @@ test('outgoing http requests are correctly instrumented with tracing disabled', expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .ensureNoErrorOutput() - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .ensureNoErrorOutput() + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', + }, + ], + }, + breadcrumbs: [ + { + message: 'manual breadcrumb', + timestamp: expect.any(Number), + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v0`, + status_code: 200, + ADDED_PATH: '/api/v0', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v1`, + status_code: 200, + ADDED_PATH: '/api/v1', }, - breadcrumbs: [ - { - message: 'manual breadcrumb', - timestamp: expect.any(Number), - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v0`, - status_code: 200, - ADDED_PATH: '/api/v0', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v1`, - status_code: 200, - ADDED_PATH: '/api/v1', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v2`, - status_code: 200, - ADDED_PATH: '/api/v2', - }, - timestamp: expect.any(Number), - type: 'http', - }, - { - category: 'http', - data: { - 'http.method': 'GET', - url: `${SERVER_URL}/api/v3`, - status_code: 200, - ADDED_PATH: '/api/v3', - }, - timestamp: expect.any(Number), - type: 'http', - }, - ], + timestamp: expect.any(Number), + type: 'http', }, - }) - .start(closeTestServer); - }); + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v2`, + status_code: 200, + ADDED_PATH: '/api/v2', + }, + timestamp: expect.any(Number), + type: 'http', + }, + { + category: 'http', + data: { + 'http.method': 'GET', + url: `${SERVER_URL}/api/v3`, + status_code: 200, + ADDED_PATH: '/api/v3', + }, + timestamp: expect.any(Number), + type: 'http', + }, + ], + }, + }) + .start() + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-esm/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-esm/test.ts index f3d58877c8f3..05c8913a9d2d 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-esm/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-esm/test.ts @@ -1,12 +1,13 @@ import { join } from 'path'; +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; describe('outgoing http in ESM', () => { - test('outgoing sampled http requests are correctly instrumented in ESM', done => { + test('outgoing sampled http requests are correctly instrumented in ESM', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); @@ -25,18 +26,19 @@ describe('outgoing http in ESM', () => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) + .start(); + + const instrumentPath = join(__dirname, 'instrument.mjs'); + await createRunner(__dirname, 'scenario.mjs') + .withFlags('--import', instrumentPath) + .withEnv({ SERVER_URL }) + .expect({ + transaction: { + // we're not too concerned with the actual transaction here since this is tested elsewhere + }, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - const instrumentPath = join(__dirname, 'instrument.mjs'); - createRunner(__dirname, 'scenario.mjs') - .withFlags('--import', instrumentPath) - .withEnv({ SERVER_URL }) - .expect({ - transaction: { - // we're not too concerned with the actual transaction here since this is tested elsewhere - }, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts index 2baff11a5faf..6811dc3bb45e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('outgoing sampled http requests without active span are correctly instrumented', done => { +test('outgoing sampled http requests without active span are correctly instrumented', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); @@ -23,22 +24,23 @@ test('outgoing sampled http requests without active span are correctly instrumen expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts index 38dfa6524019..0e52c83af91b 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('outgoing sampled http requests are correctly instrumented', done => { +test('outgoing sampled http requests are correctly instrumented', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); @@ -23,15 +24,16 @@ test('outgoing sampled http requests are correctly instrumented', done => { expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: { + // we're not too concerned with the actual transaction here since this is tested elsewhere + }, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: { - // we're not too concerned with the actual transaction here since this is tested elsewhere - }, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts index 3d2e0e421863..140ef37908f3 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../../utils/runner'; import { createTestServer } from '../../../../utils/server'; -test('outgoing http requests are correctly instrumented when not sampled', done => { +test('outgoing http requests are correctly instrumented when not sampled', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); @@ -23,22 +24,23 @@ test('outgoing http requests are correctly instrumented when not sampled', done expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) - .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - event: { - exception: { - values: [ - { - type: 'Error', - value: 'foo', - }, - ], + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + event: { + exception: { + values: [ + { + type: 'Error', + value: 'foo', }, - }, - }) - .start(closeTestServer); - }); + ], + }, + }, + }) + .start() + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts index 7c566c1d8eeb..df25a261ab2c 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('sample_rand propagation', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/test.ts index c6800055c84b..b3040dc0cfa4 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('parentSampleRate propagation with no tracing enabled', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/test.ts index c12d2920dd9f..833f04e431a6 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('parentSampleRate propagation with tracesSampleRate=0', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/test.ts index 27afa03e9045..8166c72adcb6 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('parentSampleRate propagation with tracesSampleRate', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/test.ts index f97773711941..c50e37c87780 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/test.ts @@ -1,3 +1,4 @@ +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; describe('parentSampleRate propagation with tracesSampler', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts b/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts index 6c5fd17f833a..3885b3bcce40 100644 --- a/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts @@ -1,6 +1,7 @@ +import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -jest.setTimeout(75000); +vi.setConfig({ testTimeout: 75_000 }); // Tedious version we are testing against only supports Node 18+ // https://github.com/tediousjs/tedious/blob/8310c455a2cc1cba83c1ca3c16677da4f83e12a9/package.json#L38 @@ -9,7 +10,7 @@ describe('tedious auto instrumentation', () => { cleanupChildProcesses(); }); - test('should auto-instrument `tedious` package', done => { + test('should auto-instrument `tedious` package', async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -44,9 +45,10 @@ describe('tedious auto instrumentation', () => { ]), }; - createRunner(__dirname, 'scenario.js') + await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], readyMatches: ['1433'] }) .expect({ transaction: EXPECTED_TRANSACTION }) - .start(done); + .start() + .completed(); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts index e6081bedd8ea..4185dec46afb 100644 --- a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts @@ -1,10 +1,11 @@ +import { expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; import { createTestServer } from '../../../utils/server'; -test('HttpIntegration should instrument correct requests when tracePropagationTargets option is provided', done => { +test('HttpIntegration should instrument correct requests when tracePropagationTargets option is provided', async () => { expect.assertions(11); - createTestServer(done) + const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); @@ -23,15 +24,16 @@ test('HttpIntegration should instrument correct requests when tracePropagationTa expect(headers['baggage']).toBeUndefined(); expect(headers['sentry-trace']).toBeUndefined(); }) + .start(); + + await createRunner(__dirname, 'scenario.ts') + .withEnv({ SERVER_URL }) + .expect({ + transaction: { + // we're not too concerned with the actual transaction here since this is tested elsewhere + }, + }) .start() - .then(([SERVER_URL, closeTestServer]) => { - createRunner(__dirname, 'scenario.ts') - .withEnv({ SERVER_URL }) - .expect({ - transaction: { - // we're not too concerned with the actual transaction here since this is tested elsewhere - }, - }) - .start(closeTestServer); - }); + .completed(); + closeTestServer(); }); diff --git a/dev-packages/node-integration-tests/tsconfig.test.json b/dev-packages/node-integration-tests/tsconfig.test.json index 3bd3452a3ead..f2cbf64392f0 100644 --- a/dev-packages/node-integration-tests/tsconfig.test.json +++ b/dev-packages/node-integration-tests/tsconfig.test.json @@ -1,14 +1,14 @@ { "extends": "./tsconfig.json", - "include": ["suites/**/*.ts"], + "include": ["suites/**/*.ts", "vitest.config.ts"], "compilerOptions": { // Although this seems wrong to include `DOM` here, it's necessary to make // global fetch available in tests in lower Node versions. "lib": ["DOM", "ES2018"], // should include all types from `./tsconfig.json` plus types for all test frameworks used - "types": ["node", "jest"] + "types": ["node"] // other package-specific, test-specific options } diff --git a/dev-packages/node-integration-tests/utils/runner.ts b/dev-packages/node-integration-tests/utils/runner.ts index 152160f7118b..004bec746f39 100644 --- a/dev-packages/node-integration-tests/utils/runner.ts +++ b/dev-packages/node-integration-tests/utils/runner.ts @@ -146,6 +146,17 @@ type ExpectedEnvelopeHeader = | { session: Partial } | { sessions: Partial }; +type StartResult = { + completed(): Promise; + childHasExited(): boolean; + getLogs(): string[]; + makeRequest( + method: 'get' | 'post', + path: string, + options?: { headers?: Record; data?: unknown; expectError?: boolean }, + ): Promise; +}; + /** Creates a test runner */ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function createRunner(...paths: string[]) { @@ -219,7 +230,13 @@ export function createRunner(...paths: string[]) { ensureNoErrorOutput = true; return this; }, - start: function (done?: (e?: unknown) => void) { + start: function (done?: (e?: unknown) => void): StartResult { + let resolve: (value: void) => void; + let reject: (reason?: unknown) => void; + const completePromise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); const expectedEnvelopeCount = Math.max(expectedEnvelopes.length, (expectedEnvelopeHeaders || []).length); let envelopeCount = 0; @@ -230,6 +247,11 @@ export function createRunner(...paths: string[]) { function complete(error?: Error): void { child?.kill(); done?.(normalize(error)); + if (error) { + reject(error); + } else { + resolve(); + } } /** Called after each expect callback to check if we're complete */ @@ -415,6 +437,9 @@ export function createRunner(...paths: string[]) { .catch(e => complete(e)); return { + completed: function (): Promise { + return completePromise; + }, childHasExited: function (): boolean { return hasExited; }, diff --git a/dev-packages/node-integration-tests/utils/server.ts b/dev-packages/node-integration-tests/utils/server.ts index 761ec1cd2429..93ba10e425df 100644 --- a/dev-packages/node-integration-tests/utils/server.ts +++ b/dev-packages/node-integration-tests/utils/server.ts @@ -42,8 +42,9 @@ type HeaderAssertCallback = (headers: Record void) { +export function createTestServer() { const gets: Array<[string, HeaderAssertCallback, number]> = []; + let error: unknown | undefined; return { get: function (path: string, callback: HeaderAssertCallback, result = 200) { @@ -58,7 +59,7 @@ export function createTestServer(done: (error?: unknown) => void) { try { callback(req.headers); } catch (e) { - done(e); + error = e; } res.status(result).send(); @@ -70,9 +71,11 @@ export function createTestServer(done: (error?: unknown) => void) { const address = server.address() as AddressInfo; resolve([ `http://localhost:${address.port}`, - (error?: unknown) => { + () => { server.close(); - done(error); + if (error) { + throw error; + } }, ]); }); diff --git a/dev-packages/node-integration-tests/vite.config.ts b/dev-packages/node-integration-tests/vite.config.ts new file mode 100644 index 000000000000..85591f48e17d --- /dev/null +++ b/dev-packages/node-integration-tests/vite.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config'; +import baseConfig from '../../vite/vite.config'; + +export default defineConfig({ + ...baseConfig, + test: { + ...baseConfig.test, + maxConcurrency: 4, + include: ['./**/test.ts'], + testTimeout: 15000, + }, +}); From 0bc53a128ecd492b153f548815b5aa33e9e8b172 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 25 Feb 2025 21:08:51 +0100 Subject: [PATCH 2/3] Fix most tests --- .../node-integration-tests/package.json | 1 - .../aws-serverless/aws-integration/s3/test.ts | 4 ++-- .../suites/fs-instrumentation/test.ts | 18 ++++++++++++------ .../suites/tracing/amqplib/test.ts | 7 ++----- .../suites/tracing/kafkajs/test.ts | 5 +---- .../suites/tracing/knex/test.ts | 6 ++---- .../suites/tracing/mysql2/test.ts | 5 +---- .../suites/tracing/postgres/test.ts | 7 ++----- .../suites/tracing/prisma-orm-v5/test.ts | 7 ++----- .../suites/tracing/prisma-orm-v6/test.ts | 5 +---- .../suites/tracing/redis-cache/test.ts | 9 +++------ .../suites/tracing/redis/test.ts | 7 ++----- .../suites/tracing/tedious/test.ts | 8 ++------ .../node-integration-tests/utils/runner.ts | 4 ++-- .../node-integration-tests/vite.config.ts | 5 ++++- 15 files changed, 38 insertions(+), 60 deletions(-) diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index e324363367ed..e57cb085bc91 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -22,7 +22,6 @@ "type-check": "tsc", "pretest": "yarn express-v5-install", "test": "vitest run", - "test:no-prisma": "jest --config ./jest.config.js", "test:watch": "yarn test --watch" }, "dependencies": { diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts index 0f496263c9f1..b131eb421b61 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts @@ -8,7 +8,7 @@ const EXPECTED_TRANSCATION = { description: 'S3.PutObject', op: 'rpc', origin: 'auto.otel.aws', - data: { + data: expect.objectContaining({ 'sentry.origin': 'auto.otel.aws', 'sentry.op': 'rpc', 'rpc.system': 'aws-api', @@ -17,7 +17,7 @@ const EXPECTED_TRANSCATION = { 'aws.region': 'us-east-1', 'aws.s3.bucket': 'ot-demo-test', 'otel.kind': 'CLIENT', - }, + }), }), ]), }; diff --git a/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts b/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts index d89fdd56c56e..721c569231a0 100644 --- a/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts +++ b/dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts @@ -28,7 +28,8 @@ test('should create spans for fs operations that take target argument', async () }) .start(); - expect(runner.makeRequest('get', '/readFile-error')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/readFile-error'); + expect(result).toEqual('done'); await runner.completed(); }); @@ -73,7 +74,8 @@ test('should create spans for fs operations that take one path', async () => { }) .start(); - expect(runner.makeRequest('get', '/readFile')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/readFile'); + expect(result).toEqual('done'); await runner.completed(); }); @@ -121,7 +123,8 @@ test('should create spans for fs operations that take src and dest arguments', a }) .start(); - expect(runner.makeRequest('get', '/copyFile')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/copyFile'); + expect(result).toEqual('done'); await runner.completed(); }); @@ -169,7 +172,8 @@ test('should create spans for fs operations that take existing path and new path }) .start(); - expect(runner.makeRequest('get', '/link')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/link'); + expect(result).toEqual('done'); await runner.completed(); }); @@ -214,7 +218,8 @@ test('should create spans for fs operations that take prefix argument', async () }) .start(); - expect(runner.makeRequest('get', '/mkdtemp')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/mkdtemp'); + expect(result).toEqual('done'); await runner.completed(); }); @@ -262,6 +267,7 @@ test('should create spans for fs operations that take target argument', async () }) .start(); - expect(runner.makeRequest('get', '/symlink')).resolves.toBe('done'); + const result = await runner.makeRequest('get', '/symlink'); + expect(result).toEqual('done'); await runner.completed(); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts b/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts index 43ea3d2c8f35..250e1e31c40c 100644 --- a/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/amqplib/test.ts @@ -1,10 +1,7 @@ import type { TransactionEvent } from '@sentry/core'; -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time. -vi.setConfig({ testTimeout: 90_000 }); - const EXPECTED_MESSAGE_SPAN_PRODUCER = expect.objectContaining({ op: 'message', data: expect.objectContaining({ @@ -32,7 +29,7 @@ describe('amqplib auto-instrumentation', () => { cleanupChildProcesses(); }); - test('should be able to send and receive messages', async () => { + test('should be able to send and receive messages', { timeout: 90_000 }, async () => { await createRunner(__dirname, 'scenario-message.ts') .withDockerCompose({ workingDirectory: [__dirname], diff --git a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts index dd441405392a..0157b356e03e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts @@ -1,15 +1,12 @@ import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 60_000 }); - describe('kafkajs', () => { afterAll(() => { cleanupChildProcesses(); }); - test('traces producers and consumers', async () => { + test('traces producers and consumers', { timeout: 60_000 }, async () => { await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], diff --git a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts index 396937a52541..399d94d459e6 100644 --- a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts @@ -1,13 +1,11 @@ import { describe, expect, test, vi } from 'vitest'; import { createRunner } from '../../../utils/runner'; -vi.setConfig({ testTimeout: 90_000 }); - describe('knex auto instrumentation', () => { // Update this if another knex version is installed const KNEX_VERSION = '2.5.1'; - test('should auto-instrument `knex` package when using `pg` client', async () => { + test('should auto-instrument `knex` package when using `pg` client', { timeout: 60_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ @@ -67,7 +65,7 @@ describe('knex auto instrumentation', () => { .completed(); }); - test('should auto-instrument `knex` package when using `mysql2` client', async () => { + test('should auto-instrument `knex` package when using `mysql2` client', { timeout: 60_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ diff --git a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts index d9102d559002..81cfb681b4a6 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts @@ -1,15 +1,12 @@ import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 75_000 }); - describe('mysql2 auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should auto-instrument `mysql` package without connection.connect()', async () => { + test('should auto-instrument `mysql` package without connection.connect()', { timeout: 75_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ diff --git a/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts b/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts index ed964a6bdce0..c34619e161ad 100644 --- a/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/postgres/test.ts @@ -1,11 +1,8 @@ -import { describe, expect, test, vi } from 'vitest'; +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 575 }); - describe('postgres auto instrumentation', () => { - test('should auto-instrument `pg` package', async () => { + test('should auto-instrument `pg` package', { timeout: 60_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Transaction', spans: expect.arrayContaining([ diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts index f1ecece17bc0..b7788d58e372 100644 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v5/test.ts @@ -1,15 +1,12 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 75_000 }); - afterAll(() => { cleanupChildProcesses(); }); describe('Prisma ORM v5 Tests', () => { - test('CJS - should instrument PostgreSQL queries from Prisma ORM', async () => { + test('CJS - should instrument PostgreSQL queries from Prisma ORM', { timeout: 75_000 }, async () => { await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts index 418ae6d12f2f..06d3c1b1da4c 100644 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts @@ -2,15 +2,12 @@ import type { SpanJSON } from '@sentry/core'; import { afterAll, describe, expect, test, vi } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 75_000 }); - afterAll(() => { cleanupChildProcesses(); }); describe('Prisma ORM v6 Tests', () => { - test('CJS - should instrument PostgreSQL queries from Prisma ORM', async () => { + test('CJS - should instrument PostgreSQL queries from Prisma ORM', { timeout: 75_000 }, async () => { await createRunner(__dirname, 'scenario.js') .withDockerCompose({ workingDirectory: [__dirname], diff --git a/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts b/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts index b97eecd31136..e1aa0b9c1494 100644 --- a/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts @@ -1,15 +1,12 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 90_000 }); - describe('redis cache auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should not add cache spans when key is not prefixed', async () => { + test('should not add cache spans when key is not prefixed', { timeout: 60_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ @@ -47,7 +44,7 @@ describe('redis cache auto instrumentation', () => { .completed(); }); - test('should create cache spans for prefixed keys (ioredis)', async () => { + test('should create cache spans for prefixed keys (ioredis)', { timeout: 60_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ diff --git a/dev-packages/node-integration-tests/suites/tracing/redis/test.ts b/dev-packages/node-integration-tests/suites/tracing/redis/test.ts index 88ae33ce2971..0c9bb65facdc 100644 --- a/dev-packages/node-integration-tests/suites/tracing/redis/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/redis/test.ts @@ -1,15 +1,12 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test} from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -// When running docker compose, we need a larger timeout, as this takes some time... -vi.setConfig({ testTimeout: 75_000 }); - describe('redis auto instrumentation', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should auto-instrument `ioredis` package when using redis.set() and redis.get()', async () => { + test('should auto-instrument `ioredis` package when using redis.set() and redis.get()', { timeout: 75_000 }, async () => { const EXPECTED_TRANSACTION = { transaction: 'Test Span', spans: expect.arrayContaining([ diff --git a/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts b/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts index 3885b3bcce40..797ede718b39 100644 --- a/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/tedious/test.ts @@ -1,11 +1,7 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; -vi.setConfig({ testTimeout: 75_000 }); - -// Tedious version we are testing against only supports Node 18+ -// https://github.com/tediousjs/tedious/blob/8310c455a2cc1cba83c1ca3c16677da4f83e12a9/package.json#L38 -describe('tedious auto instrumentation', () => { +describe('tedious auto instrumentation', {timeout: 75_000}, () => { afterAll(() => { cleanupChildProcesses(); }); diff --git a/dev-packages/node-integration-tests/utils/runner.ts b/dev-packages/node-integration-tests/utils/runner.ts index 004bec746f39..ff4df0a79dfc 100644 --- a/dev-packages/node-integration-tests/utils/runner.ts +++ b/dev-packages/node-integration-tests/utils/runner.ts @@ -276,7 +276,7 @@ export function createRunner(...paths: string[]) { try { if (!expected) { - throw new Error(`No more expected envelope items but we received ${JSON.stringify(header)}`); + return; } assertEnvelopeHeader(header, expected); @@ -294,7 +294,7 @@ export function createRunner(...paths: string[]) { // Catch any error or failed assertions and pass them to done to end the test quickly try { if (!expected) { - throw new Error(`No more expected envelope items but we received a '${envelopeItemType}' item`); + return; } const expectedType = Object.keys(expected)[0]; diff --git a/dev-packages/node-integration-tests/vite.config.ts b/dev-packages/node-integration-tests/vite.config.ts index 85591f48e17d..38d4abb0b16a 100644 --- a/dev-packages/node-integration-tests/vite.config.ts +++ b/dev-packages/node-integration-tests/vite.config.ts @@ -5,7 +5,10 @@ export default defineConfig({ ...baseConfig, test: { ...baseConfig.test, - maxConcurrency: 4, + isolate: false, + coverage: { + enabled: false, + }, include: ['./**/test.ts'], testTimeout: 15000, }, From 5efa3878f0547a920fa54909497ba832726c4ac3 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 25 Feb 2025 21:41:26 +0100 Subject: [PATCH 3/3] Fix lint --- .../node-integration-tests/suites/tracing/kafkajs/test.ts | 2 +- dev-packages/node-integration-tests/suites/tracing/knex/test.ts | 2 +- .../node-integration-tests/suites/tracing/mysql2/test.ts | 2 +- .../node-integration-tests/suites/tracing/prisma-orm-v6/test.ts | 2 +- dev-packages/node-integration-tests/tsconfig.test.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts index 0157b356e03e..f1d6e46db743 100644 --- a/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/kafkajs/test.ts @@ -1,4 +1,4 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('kafkajs', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts index 399d94d459e6..8fd445d51525 100644 --- a/dev-packages/node-integration-tests/suites/tracing/knex/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/knex/test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test, vi } from 'vitest'; +import { describe, expect, test } from 'vitest'; import { createRunner } from '../../../utils/runner'; describe('knex auto instrumentation', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts index 81cfb681b4a6..c1d680b9a52e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts @@ -1,4 +1,4 @@ -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; describe('mysql2 auto instrumentation', () => { diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts index 06d3c1b1da4c..5e00a00966b7 100644 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm-v6/test.ts @@ -1,5 +1,5 @@ import type { SpanJSON } from '@sentry/core'; -import { afterAll, describe, expect, test, vi } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; afterAll(() => { diff --git a/dev-packages/node-integration-tests/tsconfig.test.json b/dev-packages/node-integration-tests/tsconfig.test.json index f2cbf64392f0..45a6e39b0054 100644 --- a/dev-packages/node-integration-tests/tsconfig.test.json +++ b/dev-packages/node-integration-tests/tsconfig.test.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", - "include": ["suites/**/*.ts", "vitest.config.ts"], + "include": ["suites/**/*.ts", "vite.config.ts"], "compilerOptions": { // Although this seems wrong to include `DOM` here, it's necessary to make