Skip to content

Commit 92ce821

Browse files
authored
test(replay): Switch to explicit vitest imports (#13027)
As per https://vitest.dev/config/#globals > By default, vitest does not provide global APIs for explicitness I think we should follow vitest defaults here and explicitly import in the APIs that we need. This refactors our Replay SDK tests to do so. This change also removes `environment: 'jsdom'` from the vite config in favour of explicitly adding jsdom environment via the `@vitest-environment` pragma to the specific test file that needs it. This should means that our non-browser tests are not polluted with jsdom globals, and that future writers have to explicitly opt-in to the behaviour.
1 parent d570c19 commit 92ce821

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+245
-33
lines changed

packages/replay-internal/test/integration/autoSaveSession.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, describe, expect, test, vi } from 'vitest';
26

37
import { EventType } from '@sentry-internal/rrweb';
48

packages/replay-internal/test/integration/beforeAddRecordingEvent.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
25
import type { MockInstance, MockedFunction } from 'vitest';
6+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
37

48
import * as SentryBrowserUtils from '@sentry-internal/browser-utils';
59
import * as SentryCore from '@sentry/core';

packages/replay-internal/test/integration/coreHandlers/handleAfterSendEvent.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
25
import type { MockInstance } from 'vitest';
6+
import { afterEach, describe, expect, it, vi } from 'vitest';
7+
38
import { useFakeTimers } from '../../utils/use-fake-timers';
49

510
useFakeTimers();

packages/replay-internal/test/integration/coreHandlers/handleBeforeSendEvent.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, describe, expect, it, vi } from 'vitest';
26

37
import { handleBeforeSendEvent } from '../../../src/coreHandlers/handleBeforeSendEvent';
48
import type { ReplayContainer } from '../../../src/replay';

packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { getClient } from '@sentry/core';
28
import type { Event } from '@sentry/types';
39

packages/replay-internal/test/integration/earlyEvents.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { BASE_TIMESTAMP } from '..';
28
import { resetSdkMock } from '../mocks/resetSdkMock';
39
import { useFakeTimers } from '../utils/use-fake-timers';

packages/replay-internal/test/integration/errorSampleRate.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { captureException, getClient } from '@sentry/core';
2-
import { vi } from 'vitest';
38

49
import {
510
BUFFER_CHECKOUT_TIME,

packages/replay-internal/test/integration/eventProcessors.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
26

37
import { getClient, getCurrentScope } from '@sentry/core';
48
import type { Event } from '@sentry/types';

packages/replay-internal/test/integration/events.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import type { MockInstance } from 'vitest';
6+
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
7+
18
import { getClient } from '@sentry/core';
29

310
import { WINDOW } from '../../src/constants';

packages/replay-internal/test/integration/flush.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
25
import type { MockedFunction } from 'vitest';
6+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
37

48
import { useFakeTimers } from '../utils/use-fake-timers';
59

packages/replay-internal/test/integration/getReplayId.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, describe, expect, it, vi } from 'vitest';
6+
17
import { mockSdk } from '../mocks/mockSdk';
28
import { useFakeTimers } from '../utils/use-fake-timers';
39

packages/replay-internal/test/integration/integrationSettings.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
6+
27
import type { MockInstance } from 'vitest';
38

49
import { mockSdk } from '../index';

packages/replay-internal/test/integration/rateLimiting.test.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import type { MockedFunction } from 'vitest';
6+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
7+
18
import { getClient } from '@sentry/core';
29
import type { Transport, TransportMakeRequestResponse } from '@sentry/types';
310

@@ -14,7 +21,7 @@ async function advanceTimers(time: number) {
1421
await new Promise(process.nextTick);
1522
}
1623

17-
type MockTransportSend = vi.MockedFunction<Transport['send']>;
24+
type MockTransportSend = MockedFunction<Transport['send']>;
1825

1926
describe('Integration | rate-limiting behaviour', () => {
2027
let replay: ReplayContainer;

packages/replay-internal/test/integration/rrweb.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, describe, expect, it, vi } from 'vitest';
6+
17
import { resetSdkMock } from '../mocks/resetSdkMock';
28
import { useFakeTimers } from '../utils/use-fake-timers';
39

@@ -15,7 +21,7 @@ describe('Integration | rrweb', () => {
1521
stickySession: false,
1622
},
1723
});
18-
expect(mockRecord.mock.calls[0][0]).toMatchInlineSnapshot(`
24+
expect(mockRecord.mock.calls[0]?.[0]).toMatchInlineSnapshot(`
1925
{
2026
"blockSelector": ".sentry-block,[data-sentry-block],base[href="/"],img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]",
2127
"collectFonts": true,

packages/replay-internal/test/integration/sampling.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { getClient } from '@sentry/core';
28
import { resetSdkMock } from '../mocks/resetSdkMock';
39
import { useFakeTimers } from '../utils/use-fake-timers';

packages/replay-internal/test/integration/sendReplayEvent.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
25
import type { MockInstance, MockedFunction } from 'vitest';
6+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
37

48
import * as SentryBrowserUtils from '@sentry-internal/browser-utils';
59
import * as SentryCore from '@sentry/core';

packages/replay-internal/test/integration/session.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
26

37
import { getClient } from '@sentry/core';
48
import type { Transport } from '@sentry/types';

packages/replay-internal/test/integration/shouldFilterRequest.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { shouldFilterRequest } from '../../src/util/shouldFilterRequest';
28
import { mockSdk } from '../index';
39

packages/replay-internal/test/integration/start.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
26

37
import { getClient } from '@sentry/core';
48
import type { Transport } from '@sentry/types';

packages/replay-internal/test/integration/stop.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
25
import type { MockInstance, MockedFunction } from 'vitest';
6+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
37

48
import * as SentryBrowserUtils from '@sentry-internal/browser-utils';
59

packages/replay-internal/test/unit/coreHandlers/handleBreadcrumbs.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { describe, expect, it } from 'vitest';
2+
13
import { CONSOLE_ARG_MAX_SIZE } from '../../../src/constants';
24
import { normalizeBreadcrumb, normalizeConsoleBreadcrumb } from '../../../src/coreHandlers/handleBreadcrumbs';
35

packages/replay-internal/test/unit/coreHandlers/handleClick.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, test, vi } from 'vitest';
6+
17
import { useFakeTimers } from '../../utils/use-fake-timers';
28

39
useFakeTimers();

packages/replay-internal/test/unit/coreHandlers/handleDom.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { describe, expect, test } from 'vitest';
6+
17
import type { HandlerDataDom } from '@sentry/types';
28

39
import { handleDom } from '../../../src/coreHandlers/handleDom';

packages/replay-internal/test/unit/coreHandlers/handleKeyboardEvent.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { describe, expect, it } from 'vitest';
6+
17
import { getKeyboardBreadcrumb } from '../../../src/coreHandlers/handleKeyboardEvent';
28

39
describe('Unit | coreHandlers | handleKeyboardEvent', () => {

packages/replay-internal/test/unit/coreHandlers/handleNetworkBreadcrumbs.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
28
import type {
39
Breadcrumb,

packages/replay-internal/test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { beforeEach, describe, expect, it, vi } from 'vitest';
6+
17
import { BASE_TIMESTAMP } from '../../..';
28
import { addBreadcrumbEvent } from '../../../../src/coreHandlers/util/addBreadcrumbEvent';
39
import type { EventBufferArray } from '../../../../src/eventBuffer/EventBufferArray';

packages/replay-internal/test/unit/coreHandlers/util/fetchUtils.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import { describe, expect, it, vi } from 'vitest';
2+
13
import { useFakeTimers } from '../../../utils/use-fake-timers';
24

35
useFakeTimers();
46

5-
import { vi } from 'vitest';
6-
77
import { _getResponseInfo } from '../../../../src/coreHandlers/util/fetchUtils';
88

99
describe('Unit | coreHandlers | util | fetchUtils', () => {

packages/replay-internal/test/unit/coreHandlers/util/getAttributesToRecord.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { expect, it } from 'vitest';
2+
13
import { getAttributesToRecord } from '../../../../src/coreHandlers/util/getAttributesToRecord';
24

35
it('records only included attributes', function () {

packages/replay-internal/test/unit/coreHandlers/util/networkUtils.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { describe, expect, it } from 'vitest';
6+
17
import { NETWORK_BODY_MAX_SIZE } from '../../../../src/constants';
28
import {
39
buildNetworkRequestOrResponse,

packages/replay-internal/test/unit/coreHandlers/util/xhrUtils.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { describe, expect, it } from 'vitest';
6+
17
import { _parseXhrResponse } from '../../../../src/coreHandlers/util/xhrUtils';
28

39
describe('Unit | coreHandlers | util | xhrUtils', () => {

packages/replay-internal/test/unit/eventBuffer/EventBufferArray.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { describe, expect, it } from 'vitest';
2+
13
import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../../../src/constants';
24
import { createEventBuffer } from '../../../src/eventBuffer';
35
import { EventBufferSizeExceededError } from '../../../src/eventBuffer/error';

packages/replay-internal/test/unit/eventBuffer/EventBufferCompressionWorker.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
15
import 'jsdom-worker';
26

7+
import { describe, expect, it, vi } from 'vitest';
8+
39
import { BASE_TIMESTAMP } from '../..';
410
import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../../../src/constants';
511
import { createEventBuffer } from '../../../src/eventBuffer';

packages/replay-internal/test/unit/eventBuffer/EventBufferProxy.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
15
import 'jsdom-worker';
26

7+
import type { MockInstance } from 'vitest';
8+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
9+
310
import { BASE_TIMESTAMP } from '../..';
411
import { EventBufferProxy } from '../../../src/eventBuffer/EventBufferProxy';
512
import { decompress } from '../../utils/compression';

packages/replay-internal/test/unit/multipleInstances.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { describe, expect, it } from 'vitest';
2+
13
import { replayIntegration } from '../../src/integration';
24

35
describe('Unit | multipleInstances', () => {

packages/replay-internal/test/unit/session/createSession.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { vi } from 'vitest';
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import type { MockedFunction } from 'vitest';
6+
import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest';
27

38
import * as Sentry from '@sentry/core';
49

@@ -16,7 +21,7 @@ vi.mock('@sentry/utils', async () => {
1621
};
1722
});
1823

19-
type CaptureEventMockType = vi.MockedFunction<typeof Sentry.captureEvent>;
24+
type CaptureEventMockType = MockedFunction<typeof Sentry.captureEvent>;
2025

2126
describe('Unit | session | createSession', () => {
2227
const captureEventMock: CaptureEventMockType = vi.fn();

packages/replay-internal/test/unit/session/fetchSession.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/**
2+
* @vitest-environment jsdom
3+
*/
4+
5+
import { afterEach, beforeAll, describe, expect, it } from 'vitest';
6+
17
import { REPLAY_SESSION_KEY, WINDOW } from '../../../src/constants';
28
import { fetchSession } from '../../../src/session/fetchSession';
39

0 commit comments

Comments
 (0)