From 74a1d8111fb63cd0940490dc7d5f153ac376a376 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 23 Mar 2022 10:26:07 -0400 Subject: [PATCH 1/9] feat(browser): Add new v7 Fetch Transport --- packages/browser/src/transports/index.ts | 2 + packages/browser/src/transports/new-fetch.ts | 38 +++++++++++++++++++ .../test/unit/transports/new-fetch.test.ts | 1 + 3 files changed, 41 insertions(+) create mode 100644 packages/browser/src/transports/new-fetch.ts create mode 100644 packages/browser/test/unit/transports/new-fetch.test.ts diff --git a/packages/browser/src/transports/index.ts b/packages/browser/src/transports/index.ts index 65323f6c3744..8f938399e253 100644 --- a/packages/browser/src/transports/index.ts +++ b/packages/browser/src/transports/index.ts @@ -1,3 +1,5 @@ export { BaseTransport } from './base'; export { FetchTransport } from './fetch'; export { XHRTransport } from './xhr'; + +export { makeNewFetchTransport } from './new-fetch'; diff --git a/packages/browser/src/transports/new-fetch.ts b/packages/browser/src/transports/new-fetch.ts new file mode 100644 index 000000000000..7c597b794798 --- /dev/null +++ b/packages/browser/src/transports/new-fetch.ts @@ -0,0 +1,38 @@ +import { BaseTransportOptions, createTransport, NewTransport } from '@sentry/core'; +import { TransportMakeRequestResponse, TransportRequest } from '@sentry/core/dist/transports/base'; + +import { getNativeFetchImplementation } from './utils'; + +export interface FetchTransportOptions extends BaseTransportOptions { + requestOptions?: RequestInit; +} + +/** + * Creates a Transport that uses the Fetch API to send events to Sentry. + */ +export function makeNewFetchTransport(options: FetchTransportOptions): NewTransport { + const nativeFetch = getNativeFetchImplementation(); + + function makeRequest(request: TransportRequest): PromiseLike { + const requestOptions: RequestInit = { + body: request.body, + method: 'POST', + referrerPolicy: 'origin', + ...options.requestOptions, + }; + + return nativeFetch(options.url, requestOptions).then(response => { + return response.text().then(body => ({ + body, + headers: { + 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'), + 'retry-after': response.headers.get('Retry-After'), + }, + reason: response.statusText, + statusCode: response.status, + })); + }); + } + + return createTransport({ bufferSize: options.bufferSize }, makeRequest); +} diff --git a/packages/browser/test/unit/transports/new-fetch.test.ts b/packages/browser/test/unit/transports/new-fetch.test.ts new file mode 100644 index 000000000000..010381fdfa65 --- /dev/null +++ b/packages/browser/test/unit/transports/new-fetch.test.ts @@ -0,0 +1 @@ +describe('NewFetchTransport', () => {}); From e48fe10ba8eb93a444207d53524480c13a8ef31a Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 23 Mar 2022 10:59:17 -0400 Subject: [PATCH 2/9] fix imports --- packages/browser/src/transports/new-fetch.ts | 9 +++++++-- .../test/unit/transports/new-fetch.test.ts | 19 ++++++++++++++++++- packages/core/src/index.ts | 7 +++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/browser/src/transports/new-fetch.ts b/packages/browser/src/transports/new-fetch.ts index 7c597b794798..0f3439d7fce6 100644 --- a/packages/browser/src/transports/new-fetch.ts +++ b/packages/browser/src/transports/new-fetch.ts @@ -1,5 +1,10 @@ -import { BaseTransportOptions, createTransport, NewTransport } from '@sentry/core'; -import { TransportMakeRequestResponse, TransportRequest } from '@sentry/core/dist/transports/base'; +import { + BaseTransportOptions, + createTransport, + NewTransport, + TransportMakeRequestResponse, + TransportRequest, +} from '@sentry/core'; import { getNativeFetchImplementation } from './utils'; diff --git a/packages/browser/test/unit/transports/new-fetch.test.ts b/packages/browser/test/unit/transports/new-fetch.test.ts index 010381fdfa65..263f78118131 100644 --- a/packages/browser/test/unit/transports/new-fetch.test.ts +++ b/packages/browser/test/unit/transports/new-fetch.test.ts @@ -1 +1,18 @@ -describe('NewFetchTransport', () => {}); +// eslint-disable-next-line no-var +declare var window: any; + +describe('NewFetchTransport', () => { + beforeEach(() => { + window.fetch = fetch; + window.Headers = class Headers { + headers: { [key: string]: string } = {}; + get(key: string) { + return this.headers[key]; + } + set(key: string, value: string) { + this.headers[key] = value; + } + }; + transport = new Transports.FetchTransport({ dsn: testDsn }, window.fetch); + }); +}); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index d422f9a09c45..5f132aaefa1f 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -29,6 +29,13 @@ export { BackendClass, BaseBackend } from './basebackend'; export { eventToSentryRequest, sessionToSentryRequest } from './request'; export { initAndBind, ClientClass } from './sdk'; export { NoopTransport } from './transports/noop'; +export { + BaseTransportOptions, + createTransport, + NewTransport, + TransportMakeRequestResponse, + TransportRequest, +} from './transports/base'; export { SDK_VERSION } from './version'; import * as Integrations from './integrations'; From acdfa7eb39355c159e4b97912fcf64be0e6ac574 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 23 Mar 2022 12:27:12 -0400 Subject: [PATCH 3/9] initial set of tests --- packages/browser/src/transports/new-fetch.ts | 9 ++- .../test/unit/transports/new-fetch.test.ts | 78 +++++++++++++++---- 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/packages/browser/src/transports/new-fetch.ts b/packages/browser/src/transports/new-fetch.ts index 0f3439d7fce6..47a85b517e77 100644 --- a/packages/browser/src/transports/new-fetch.ts +++ b/packages/browser/src/transports/new-fetch.ts @@ -6,7 +6,7 @@ import { TransportRequest, } from '@sentry/core'; -import { getNativeFetchImplementation } from './utils'; +import { FetchImpl, getNativeFetchImplementation } from './utils'; export interface FetchTransportOptions extends BaseTransportOptions { requestOptions?: RequestInit; @@ -15,9 +15,10 @@ export interface FetchTransportOptions extends BaseTransportOptions { /** * Creates a Transport that uses the Fetch API to send events to Sentry. */ -export function makeNewFetchTransport(options: FetchTransportOptions): NewTransport { - const nativeFetch = getNativeFetchImplementation(); - +export function makeNewFetchTransport( + options: FetchTransportOptions, + nativeFetch: FetchImpl = getNativeFetchImplementation(), +): NewTransport { function makeRequest(request: TransportRequest): PromiseLike { const requestOptions: RequestInit = { body: request.body, diff --git a/packages/browser/test/unit/transports/new-fetch.test.ts b/packages/browser/test/unit/transports/new-fetch.test.ts index 263f78118131..5f44c4de7e84 100644 --- a/packages/browser/test/unit/transports/new-fetch.test.ts +++ b/packages/browser/test/unit/transports/new-fetch.test.ts @@ -1,18 +1,70 @@ -// eslint-disable-next-line no-var -declare var window: any; +import { NewTransport } from '@sentry/core'; +import { makeNewFetchTransport, FetchTransportOptions } from '../../../src/transports/new-fetch'; +import { createEnvelope, serializeEnvelope } from '@sentry/utils'; +import { EventEnvelope, EventItem } from '@sentry/types'; +import { FetchImpl } from '../../../src/transports/utils'; + +const DEFAULT_FETCH_TRANSPORT_OPTIONS: FetchTransportOptions = { + url: 'https://sentry.io/api/42/store/?sentry_key=123&sentry_version=7', +}; + +const ERROR_ENVELOPE = createEnvelope({ event_id: 'aa3ff046696b4bc6b609ce6d28fde9e2', sent_at: '123' }, [ + [{ type: 'event' }, { event_id: 'aa3ff046696b4bc6b609ce6d28fde9e2' }] as EventItem, +]); + +class Headers { + headers: { [key: string]: string } = {}; + get(key: string) { + return this.headers[key] || null; + } + set(key: string, value: string) { + this.headers[key] = value; + } +} describe('NewFetchTransport', () => { - beforeEach(() => { - window.fetch = fetch; - window.Headers = class Headers { - headers: { [key: string]: string } = {}; - get(key: string) { - return this.headers[key]; - } - set(key: string, value: string) { - this.headers[key] = value; - } + it('calls fetch with the given URL', async () => { + const mockFetch = jest.fn(() => + Promise.resolve({ + headers: new Headers(), + status: 200, + text: () => Promise.resolve({}), + }), + ) as unknown as FetchImpl; + const transport = makeNewFetchTransport(DEFAULT_FETCH_TRANSPORT_OPTIONS, mockFetch); + + expect(mockFetch).toHaveBeenCalledTimes(0); + const res = await transport.send(ERROR_ENVELOPE); + expect(mockFetch).toHaveBeenCalledTimes(1); + + expect(res.status).toBe('success'); + + expect(mockFetch).toHaveBeenLastCalledWith(DEFAULT_FETCH_TRANSPORT_OPTIONS.url, { + body: serializeEnvelope(ERROR_ENVELOPE), + method: 'POST', + referrerPolicy: 'origin', + }); + }); + + it('sets rate limit headers', async () => { + const headers = { + get: jest.fn(), }; - transport = new Transports.FetchTransport({ dsn: testDsn }, window.fetch); + + const mockFetch = jest.fn(() => + Promise.resolve({ + headers, + status: 200, + text: () => Promise.resolve({}), + }), + ) as unknown as FetchImpl; + const transport = makeNewFetchTransport(DEFAULT_FETCH_TRANSPORT_OPTIONS, mockFetch); + + expect(headers.get).toHaveBeenCalledTimes(0); + await transport.send(ERROR_ENVELOPE); + + expect(headers.get).toHaveBeenCalledTimes(2); + expect(headers.get).toHaveBeenCalledWith('X-Sentry-Rate-Limits'); + expect(headers.get).toHaveBeenCalledWith('Retry-After'); }); }); From ed97fdddbf3791264323e010535e4fdb918cd4c2 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 24 Mar 2022 09:44:32 -0400 Subject: [PATCH 4/9] Create new transport in browser backend --- packages/browser/src/backend.ts | 13 ++++++--- .../test/unit/transports/new-fetch.test.ts | 29 ++++++++++++++++++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/packages/browser/src/backend.ts b/packages/browser/src/backend.ts index 3ca50f2b2fe7..d6dfe5d25ddc 100644 --- a/packages/browser/src/backend.ts +++ b/packages/browser/src/backend.ts @@ -1,9 +1,9 @@ -import { BaseBackend } from '@sentry/core'; -import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; +import { BaseBackend, getEnvelopeEndpointWithUrlEncodedAuth, initAPIDetails } from '@sentry/core'; +import { Event, EventHint, Options, Severity, Transport, TransportOptions } from '@sentry/types'; import { supportsFetch } from '@sentry/utils'; import { eventFromException, eventFromMessage } from './eventbuilder'; -import { FetchTransport, XHRTransport } from './transports'; +import { FetchTransport, makeNewFetchTransport, XHRTransport } from './transports'; /** * Configuration options for the Sentry Browser SDK. @@ -58,7 +58,7 @@ export class BrowserBackend extends BaseBackend { return super._setupTransport(); } - const transportOptions = { + const transportOptions: TransportOptions = { ...this._options.transportOptions, dsn: this._options.dsn, tunnel: this._options.tunnel, @@ -66,10 +66,15 @@ export class BrowserBackend extends BaseBackend { _metadata: this._options._metadata, }; + const api = initAPIDetails(transportOptions.dsn, transportOptions._metadata, transportOptions.tunnel); + const url = getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel); + if (this._options.transport) { return new this._options.transport(transportOptions); } if (supportsFetch()) { + const requestOptions: RequestInit = { ...transportOptions.fetchParameters }; + this._newTransport = makeNewFetchTransport({ requestOptions, url }); return new FetchTransport(transportOptions); } return new XHRTransport(transportOptions); diff --git a/packages/browser/test/unit/transports/new-fetch.test.ts b/packages/browser/test/unit/transports/new-fetch.test.ts index 5f44c4de7e84..bcfd7f97ccc7 100644 --- a/packages/browser/test/unit/transports/new-fetch.test.ts +++ b/packages/browser/test/unit/transports/new-fetch.test.ts @@ -1,4 +1,3 @@ -import { NewTransport } from '@sentry/core'; import { makeNewFetchTransport, FetchTransportOptions } from '../../../src/transports/new-fetch'; import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import { EventEnvelope, EventItem } from '@sentry/types'; @@ -67,4 +66,32 @@ describe('NewFetchTransport', () => { expect(headers.get).toHaveBeenCalledWith('X-Sentry-Rate-Limits'); expect(headers.get).toHaveBeenCalledWith('Retry-After'); }); + + it('allows for custom options to be passed in', async () => { + const mockFetch = jest.fn(() => + Promise.resolve({ + headers: new Headers(), + status: 200, + text: () => Promise.resolve({}), + }), + ) as unknown as FetchImpl; + + const REQUEST_OPTIONS: RequestInit = { + referrerPolicy: 'strict-origin', + keepalive: true, + referrer: 'http://example.org', + }; + + const transport = makeNewFetchTransport( + { ...DEFAULT_FETCH_TRANSPORT_OPTIONS, requestOptions: REQUEST_OPTIONS }, + mockFetch, + ); + + await transport.send(ERROR_ENVELOPE); + expect(mockFetch).toHaveBeenLastCalledWith(DEFAULT_FETCH_TRANSPORT_OPTIONS.url, { + body: serializeEnvelope(ERROR_ENVELOPE), + method: 'POST', + ...REQUEST_OPTIONS, + }); + }); }); From 78b26bbc80aa28f2fd23f0f16813956bd538e49b Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 24 Mar 2022 10:10:30 -0400 Subject: [PATCH 5/9] make sure we apply sdk logic --- packages/core/src/request.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/core/src/request.ts b/packages/core/src/request.ts index db53a0a367e6..2d65006272dd 100644 --- a/packages/core/src/request.ts +++ b/packages/core/src/request.ts @@ -82,6 +82,35 @@ export function createEventEnvelope(event: Event, api: APIDetails): EventEnvelop const { transactionSampling } = event.sdkProcessingMetadata || {}; const { method: samplingMethod, rate: sampleRate } = transactionSampling || {}; + // TODO: Below is a temporary hack in order to debug a serialization error - see + // https://github.com/getsentry/sentry-javascript/issues/2809, + // https://github.com/getsentry/sentry-javascript/pull/4425, and + // https://github.com/getsentry/sentry-javascript/pull/4574. + // + // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to + // throw a circular reference error. + // + // When it's time to remove it: + // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting + // `sdkProcessingMetadata` + // 2. Restore the original version of the request body, which is commented out + // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the + // baseClient tests in this package + enhanceEventWithSdkInfo(event, api.metadata.sdk); + event.tags = event.tags || {}; + event.extra = event.extra || {}; + + // In theory, all events should be marked as having gone through normalization and so + // we should never set this tag/extra data + if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) { + event.tags.skippedNormalization = true; + event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset'; + } + + // prevent this data from being sent to sentry + // TODO: This is NOT part of the hack - DO NOT DELETE + delete event.sdkProcessingMetadata; + const envelopeHeaders = { event_id: event.event_id as string, sent_at: new Date().toISOString(), From 2bcbbf5ff84379fc9f6c232e36695f35f1256bb5 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 24 Mar 2022 10:10:42 -0400 Subject: [PATCH 6/9] add integration tests --- .../fetch-captureException/subject.js | 1 + .../fetch-captureException/test.ts | 21 +++++++++++++++++++ .../fetch-startTransaction/subject.js | 2 ++ .../fetch-startTransaction/test.ts | 13 ++++++++++++ .../suites/new-transports/init.js | 13 ++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 packages/integration-tests/suites/new-transports/fetch-captureException/subject.js create mode 100644 packages/integration-tests/suites/new-transports/fetch-captureException/test.ts create mode 100644 packages/integration-tests/suites/new-transports/fetch-startTransaction/subject.js create mode 100644 packages/integration-tests/suites/new-transports/fetch-startTransaction/test.ts create mode 100644 packages/integration-tests/suites/new-transports/init.js diff --git a/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js b/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js new file mode 100644 index 000000000000..bd85c8d4c6aa --- /dev/null +++ b/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js @@ -0,0 +1 @@ +Sentry.captureException({}); diff --git a/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts new file mode 100644 index 000000000000..c32e3ad1e3ab --- /dev/null +++ b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts @@ -0,0 +1,21 @@ +import { expect } from '@playwright/test'; +import { Event } from '@sentry/types'; + +import { sentryTest } from '../../../utils/fixtures'; +import { getFirstSentryEnvelopeRequest } from '../../../utils/helpers'; + +sentryTest('should capture an empty object with the new fetch transport', async ({ getLocalTestPath, page }) => { + const url = await getLocalTestPath({ testDir: __dirname }); + + const eventData = await getFirstSentryEnvelopeRequest(page, url); + + expect(eventData.exception?.values).toHaveLength(1); + expect(eventData.exception?.values?.[0]).toMatchObject({ + type: 'Error', + value: 'Non-Error exception captured with keys: [object has no keys]', + mechanism: { + type: 'generic', + handled: true, + }, + }); +}); diff --git a/packages/integration-tests/suites/new-transports/fetch-startTransaction/subject.js b/packages/integration-tests/suites/new-transports/fetch-startTransaction/subject.js new file mode 100644 index 000000000000..78c7c33c654c --- /dev/null +++ b/packages/integration-tests/suites/new-transports/fetch-startTransaction/subject.js @@ -0,0 +1,2 @@ +const transaction = Sentry.startTransaction({ name: 'test_transaction_1' }); +transaction.finish(); diff --git a/packages/integration-tests/suites/new-transports/fetch-startTransaction/test.ts b/packages/integration-tests/suites/new-transports/fetch-startTransaction/test.ts new file mode 100644 index 000000000000..8daef2e06b54 --- /dev/null +++ b/packages/integration-tests/suites/new-transports/fetch-startTransaction/test.ts @@ -0,0 +1,13 @@ +import { expect } from '@playwright/test'; +import { Event } from '@sentry/types'; + +import { sentryTest } from '../../../utils/fixtures'; +import { getFirstSentryEnvelopeRequest } from '../../../utils/helpers'; + +sentryTest('should report a transaction with the new fetch transport', async ({ getLocalTestPath, page }) => { + const url = await getLocalTestPath({ testDir: __dirname }); + const transaction = await getFirstSentryEnvelopeRequest(page, url); + + expect(transaction.transaction).toBe('test_transaction_1'); + expect(transaction.spans).toBeDefined(); +}); diff --git a/packages/integration-tests/suites/new-transports/init.js b/packages/integration-tests/suites/new-transports/init.js new file mode 100644 index 000000000000..f87dbad27be3 --- /dev/null +++ b/packages/integration-tests/suites/new-transports/init.js @@ -0,0 +1,13 @@ +import * as Sentry from '@sentry/browser'; +// eslint-disable-next-line no-unused-vars +import '@sentry/tracing'; + +window.Sentry = Sentry; + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + _experiments: { + newTransport: true, + }, + tracesSampleRate: 1.0, +}); From 04234105402b8be2bb2e93e03f2754634ea3bb5d Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 24 Mar 2022 10:31:12 -0400 Subject: [PATCH 7/9] yarn fix --- packages/browser/test/unit/transports/new-fetch.test.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/browser/test/unit/transports/new-fetch.test.ts b/packages/browser/test/unit/transports/new-fetch.test.ts index bcfd7f97ccc7..e1030be07204 100644 --- a/packages/browser/test/unit/transports/new-fetch.test.ts +++ b/packages/browser/test/unit/transports/new-fetch.test.ts @@ -1,6 +1,7 @@ -import { makeNewFetchTransport, FetchTransportOptions } from '../../../src/transports/new-fetch'; -import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import { EventEnvelope, EventItem } from '@sentry/types'; +import { createEnvelope, serializeEnvelope } from '@sentry/utils'; + +import { FetchTransportOptions, makeNewFetchTransport } from '../../../src/transports/new-fetch'; import { FetchImpl } from '../../../src/transports/utils'; const DEFAULT_FETCH_TRANSPORT_OPTIONS: FetchTransportOptions = { From b294707109f36ba91c15387d3d0029cec0c75123 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 28 Mar 2022 09:08:03 -0400 Subject: [PATCH 8/9] update suite --- .../suites/new-transports/fetch-captureException/subject.js | 2 +- .../suites/new-transports/fetch-captureException/test.ts | 6 ++++-- packages/integration-tests/suites/new-transports/init.js | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js b/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js index bd85c8d4c6aa..9cc217bdb087 100644 --- a/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js +++ b/packages/integration-tests/suites/new-transports/fetch-captureException/subject.js @@ -1 +1 @@ -Sentry.captureException({}); +Sentry.captureException(new Error('this is an error')); diff --git a/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts index c32e3ad1e3ab..aa655df7b327 100644 --- a/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts +++ b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts @@ -4,15 +4,17 @@ import { Event } from '@sentry/types'; import { sentryTest } from '../../../utils/fixtures'; import { getFirstSentryEnvelopeRequest } from '../../../utils/helpers'; -sentryTest('should capture an empty object with the new fetch transport', async ({ getLocalTestPath, page }) => { +sentryTest('should capture an error with the new fetch transport', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); + page.on('console', arg => console.log(arg)); + const eventData = await getFirstSentryEnvelopeRequest(page, url); expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ type: 'Error', - value: 'Non-Error exception captured with keys: [object has no keys]', + value: 'this is an error', mechanism: { type: 'generic', handled: true, diff --git a/packages/integration-tests/suites/new-transports/init.js b/packages/integration-tests/suites/new-transports/init.js index f87dbad27be3..6cc8110c0475 100644 --- a/packages/integration-tests/suites/new-transports/init.js +++ b/packages/integration-tests/suites/new-transports/init.js @@ -1,6 +1,6 @@ import * as Sentry from '@sentry/browser'; // eslint-disable-next-line no-unused-vars -import '@sentry/tracing'; +import * as _ from '@sentry/tracing'; window.Sentry = Sentry; From 05c8c2a61d14724e9d14f2eb67ea080cff93bee1 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 28 Mar 2022 15:28:44 -0400 Subject: [PATCH 9/9] console.log --- .../suites/new-transports/fetch-captureException/test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts index aa655df7b327..cb92e50e2dc5 100644 --- a/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts +++ b/packages/integration-tests/suites/new-transports/fetch-captureException/test.ts @@ -7,8 +7,6 @@ import { getFirstSentryEnvelopeRequest } from '../../../utils/helpers'; sentryTest('should capture an error with the new fetch transport', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); - page.on('console', arg => console.log(arg)); - const eventData = await getFirstSentryEnvelopeRequest(page, url); expect(eventData.exception?.values).toHaveLength(1);