Skip to content

Commit 5855699

Browse files
committed
Merge branch 'master' of https://github.com/getsentry/sentry-javascript into onur/playwright-browser-tests
2 parents d4d8272 + bb80135 commit 5855699

File tree

14 files changed

+46
-57
lines changed

14 files changed

+46
-57
lines changed

packages/browser/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
"tslib": "^1.9.3"
2323
},
2424
"devDependencies": {
25-
"@sentry-internal/eslint-config-sdk": "6.16.0",
26-
"@types/eslint": "^7.2.0",
2725
"@types/md5": "2.1.33",
2826
"btoa": "^1.2.1",
2927
"chai": "^4.1.2",

packages/ember/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
"@embroider/test-setup": "~0.47.2",
4646
"@glimmer/component": "~1.0.0",
4747
"@glimmer/tracking": "~1.0.0",
48-
"@sentry-internal/eslint-config-sdk": "6.16.0",
4948
"@types/ember": "~3.16.5",
5049
"@types/ember-qunit": "~3.4.9",
5150
"@types/ember__debug": "^3.16.5",

packages/node/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"tslib": "^1.9.3"
2828
},
2929
"devDependencies": {
30-
"@sentry-internal/eslint-config-sdk": "6.16.0",
3130
"@types/cookie": "0.3.2",
3231
"@types/express": "^4.17.2",
3332
"@types/lru-cache": "^5.1.0",

packages/react/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"react": "15.x || 16.x || 17.x"
2828
},
2929
"devDependencies": {
30-
"@sentry-internal/eslint-config-sdk": "6.16.0",
3130
"@testing-library/react": "^11.2.6",
3231
"@testing-library/react-hooks": "^5.1.1",
3332
"@types/history-4": "npm:@types/[email protected]",

packages/serverless/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
"@google-cloud/common": "^3.4.1",
3131
"@google-cloud/functions-framework": "^1.7.1",
3232
"@google-cloud/pubsub": "^2.5.0",
33-
"@sentry-internal/eslint-config-sdk": "6.16.0",
3433
"@types/node": "^14.6.4",
3534
"aws-sdk": "^2.765.0",
3635
"find-up": "^5.0.0",

packages/tracing/src/browser/backgroundtab.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { getGlobalObject, logger } from '@sentry/utils';
22

3+
import { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';
34
import { IdleTransaction } from '../idletransaction';
45
import { SpanStatus } from '../spanstatus';
56
import { getActiveTransaction } from '../utils';
@@ -24,6 +25,7 @@ export function registerBackgroundTabDetection(): void {
2425
activeTransaction.setStatus(SpanStatus.Cancelled);
2526
}
2627
activeTransaction.setTag('visibilitychange', 'document.hidden');
28+
activeTransaction.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);
2729
activeTransaction.finish();
2830
}
2931
});

packages/tracing/src/browser/browsertracing.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DEFAULT_IDLE_TIMEOUT, IdleTransaction } from '../idletransaction';
77
import { SpanStatus } from '../spanstatus';
88
import { extractTraceparentData, secToMs } from '../utils';
99
import { registerBackgroundTabDetection } from './backgroundtab';
10-
import { DEFAULT_METRICS_INSTR_OPTIONS, MetricsInstrumentation, MetricsInstrumentationOptions } from './metrics';
10+
import { MetricsInstrumentation } from './metrics';
1111
import {
1212
defaultRequestInstrumentationOptions,
1313
instrumentOutgoingRequests,
@@ -67,7 +67,7 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions {
6767
*
6868
* Default: undefined
6969
*/
70-
_metricOptions?: Partial<MetricsInstrumentationOptions>;
70+
_metricOptions?: Partial<{ _reportAllChanges: boolean }>;
7171

7272
/**
7373
* beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction
@@ -129,18 +129,19 @@ export class BrowserTracing implements Integration {
129129

130130
private readonly _emitOptionsWarning: boolean = false;
131131

132+
/** Store configured idle timeout so that it can be added as a tag to transactions */
133+
private _configuredIdleTimeout: BrowserTracingOptions['idleTimeout'] | undefined = undefined;
134+
132135
public constructor(_options?: Partial<BrowserTracingOptions>) {
133136
let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;
134137
// NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances
135-
if (
136-
_options &&
137-
_options.tracingOrigins &&
138-
Array.isArray(_options.tracingOrigins) &&
139-
_options.tracingOrigins.length !== 0
140-
) {
141-
tracingOrigins = _options.tracingOrigins;
142-
} else {
143-
this._emitOptionsWarning = true;
138+
if (_options) {
139+
this._configuredIdleTimeout = _options.idleTimeout;
140+
if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {
141+
tracingOrigins = _options.tracingOrigins;
142+
} else {
143+
this._emitOptionsWarning = true;
144+
}
144145
}
145146

146147
this.options = {
@@ -149,7 +150,8 @@ export class BrowserTracing implements Integration {
149150
tracingOrigins,
150151
};
151152

152-
this._metrics = new MetricsInstrumentation({ ...DEFAULT_METRICS_INSTR_OPTIONS, ...this.options._metricOptions });
153+
const { _metricOptions } = this.options;
154+
this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);
153155
}
154156

155157
/**
@@ -236,6 +238,8 @@ export class BrowserTracing implements Integration {
236238
adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);
237239
});
238240

241+
idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);
242+
239243
return idleTransaction as Transaction;
240244
}
241245
}

packages/tracing/src/browser/metrics.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,6 @@ import { NavigatorDeviceMemory, NavigatorNetworkInformation } from './web-vitals
1414

1515
const global = getGlobalObject<Window>();
1616

17-
/**
18-
* Exports a way to add options to our metric collection. Currently experimental.
19-
*/
20-
export interface MetricsInstrumentationOptions {
21-
_reportAllChanges: boolean;
22-
}
23-
24-
export const DEFAULT_METRICS_INSTR_OPTIONS: MetricsInstrumentationOptions = {
25-
_reportAllChanges: false,
26-
};
27-
2817
/** Class tracking metrics */
2918
export class MetricsInstrumentation {
3019
private _measurements: Measurements = {};
@@ -33,14 +22,14 @@ export class MetricsInstrumentation {
3322
private _lcpEntry: LargestContentfulPaint | undefined;
3423
private _clsEntry: LayoutShift | undefined;
3524

36-
public constructor(_options: MetricsInstrumentationOptions) {
25+
public constructor(private _reportAllChanges: boolean = false) {
3726
if (!isNodeEnv() && global?.performance && global?.document) {
3827
if (global.performance.mark) {
3928
global.performance.mark('sentry-tracing-init');
4029
}
4130

4231
this._trackCLS();
43-
this._trackLCP(_options._reportAllChanges);
32+
this._trackLCP();
4433
this._trackFID();
4534
}
4635
}
@@ -206,6 +195,8 @@ export class MetricsInstrumentation {
206195

207196
transaction.setMeasurements(this._measurements);
208197
this._tagMetricInfo(transaction);
198+
199+
transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);
209200
}
210201
}
211202

@@ -296,7 +287,7 @@ export class MetricsInstrumentation {
296287
}
297288

298289
/** Starts tracking the Largest Contentful Paint on the current page. */
299-
private _trackLCP(reportAllChanges: boolean): void {
290+
private _trackLCP(): void {
300291
getLCP(metric => {
301292
const entry = metric.entries.pop();
302293

@@ -310,7 +301,7 @@ export class MetricsInstrumentation {
310301
this._measurements['lcp'] = { value: metric.value };
311302
this._measurements['mark.lcp'] = { value: timeOrigin + startTime };
312303
this._lcpEntry = entry as LargestContentfulPaint;
313-
}, reportAllChanges);
304+
}, this._reportAllChanges);
314305
}
315306

316307
/** Starts tracking the First Input Delay on the current page. */

packages/tracing/src/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Store finish reasons in tuple to save on bundle size
2+
// Readonly type should enforce that this is not mutated.
3+
export const FINISH_REASON_TAG = 'finishReason';
4+
5+
export const IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'] as const;

packages/tracing/src/idletransaction.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Hub } from '@sentry/hub';
22
import { TransactionContext } from '@sentry/types';
33
import { logger, timestampWithMs } from '@sentry/utils';
44

5+
import { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';
56
import { Span, SpanRecorder } from './span';
67
import { SpanStatus } from './spanstatus';
78
import { Transaction } from './transaction';
@@ -223,6 +224,7 @@ export class IdleTransaction extends Transaction {
223224

224225
setTimeout(() => {
225226
if (!this._finished) {
227+
this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);
226228
this.finish(end);
227229
}
228230
}, timeout);
@@ -252,7 +254,7 @@ export class IdleTransaction extends Transaction {
252254
if (this._heartbeatCounter >= 3) {
253255
logger.log(`[Tracing] Transaction finished because of no change for 3 heart beats`);
254256
this.setStatus(SpanStatus.DeadlineExceeded);
255-
this.setTag('heartbeat', 'failed');
257+
this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);
256258
this.finish();
257259
} else {
258260
this._pingHeartbeat();

packages/tracing/test/browser/browsertracing.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
getHeaderContext,
1212
getMetaContent,
1313
} from '../../src/browser/browsertracing';
14-
import { DEFAULT_METRICS_INSTR_OPTIONS, MetricsInstrumentation } from '../../src/browser/metrics';
14+
import { MetricsInstrumentation } from '../../src/browser/metrics';
1515
import { defaultRequestInstrumentationOptions } from '../../src/browser/request';
1616
import { instrumentRoutingWithDefaults } from '../../src/browser/router';
1717
import * as hubExtensions from '../../src/hubextensions';
@@ -246,6 +246,8 @@ describe('BrowserTracing', () => {
246246
expect(mockFinish).toHaveBeenCalledTimes(0);
247247
jest.advanceTimersByTime(DEFAULT_IDLE_TIMEOUT);
248248
expect(mockFinish).toHaveBeenCalledTimes(1);
249+
250+
expect(transaction.tags).toEqual({ finishReason: 'idleTimeout', idleTimeout: undefined });
249251
});
250252

251253
it('can be a custom value', () => {
@@ -260,6 +262,8 @@ describe('BrowserTracing', () => {
260262
expect(mockFinish).toHaveBeenCalledTimes(0);
261263
jest.advanceTimersByTime(2000);
262264
expect(mockFinish).toHaveBeenCalledTimes(1);
265+
266+
expect(transaction.tags).toEqual({ finishReason: 'idleTimeout', idleTimeout: 2000 });
263267
});
264268
});
265269

@@ -507,7 +511,7 @@ describe('BrowserTracing', () => {
507511
createBrowserTracing(true, {});
508512

509513
expect(MetricsInstrumentation).toHaveBeenCalledTimes(1);
510-
expect(MetricsInstrumentation).toHaveBeenLastCalledWith(DEFAULT_METRICS_INSTR_OPTIONS);
514+
expect(MetricsInstrumentation).toHaveBeenLastCalledWith(undefined);
511515
});
512516

513517
it('creates metrics instrumentation with custom options', () => {
@@ -518,9 +522,7 @@ describe('BrowserTracing', () => {
518522
});
519523

520524
expect(MetricsInstrumentation).toHaveBeenCalledTimes(1);
521-
expect(MetricsInstrumentation).toHaveBeenLastCalledWith({
522-
_reportAllChanges: true,
523-
});
525+
expect(MetricsInstrumentation).toHaveBeenLastCalledWith(true);
524526
});
525527
});
526528
});

packages/utils/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"tslib": "^1.9.3"
2121
},
2222
"devDependencies": {
23-
"@sentry-internal/eslint-config-sdk": "6.16.0",
2423
"chai": "^4.1.2",
2524
"jsdom": "^16.2.2",
2625
"typescript": "3.7.5"

packages/wasm/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@
2121
"tslib": "^1.9.3"
2222
},
2323
"devDependencies": {
24-
"@sentry-internal/eslint-config-sdk": "6.16.0",
2524
"@types/jest-environment-puppeteer": "^4.4.0",
2625
"@types/puppeteer": "^5.4.0",
2726
"cross-env": "^7.0.3",
2827
"express": "^4.17.1",
2928
"jest-puppeteer": "^4.4.0",
30-
"npm-run-all": "^4.1.2",
3129
"puppeteer": "^5.5.0",
3230
"rollup": "^1.10.1",
3331
"rollup-plugin-commonjs": "^9.3.4",

yarn.lock

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3489,14 +3489,6 @@
34893489
"@types/estree" "*"
34903490
"@types/json-schema" "*"
34913491

3492-
"@types/eslint@^7.2.0":
3493-
version "7.2.10"
3494-
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917"
3495-
integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==
3496-
dependencies:
3497-
"@types/estree" "*"
3498-
"@types/json-schema" "*"
3499-
35003492
"@types/estree@*":
35013493
version "0.0.47"
35023494
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4"
@@ -3636,16 +3628,16 @@
36363628
"@types/parse5" "*"
36373629
"@types/tough-cookie" "*"
36383630

3639-
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
3640-
version "7.0.7"
3641-
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
3642-
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
3643-
3644-
"@types/json-schema@^7.0.8":
3631+
"@types/json-schema@*", "@types/json-schema@^7.0.8":
36453632
version "7.0.9"
36463633
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
36473634
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
36483635

3636+
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
3637+
version "7.0.7"
3638+
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
3639+
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
3640+
36493641
"@types/json5@^0.0.29":
36503642
version "0.0.29"
36513643
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@@ -15895,7 +15887,7 @@ npm-registry-fetch@^4.0.0:
1589515887
npm-package-arg "^6.1.0"
1589615888
safe-buffer "^5.2.0"
1589715889

15898-
npm-run-all@^4.1.2, npm-run-all@^4.1.5:
15890+
npm-run-all@^4.1.5:
1589915891
version "4.1.5"
1590015892
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
1590115893
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==

0 commit comments

Comments
 (0)