Skip to content

Commit 0dddd89

Browse files
authored
ref(tracing): support browser.request span for reparenting (#77176)
Add reparenting support for the incoming renaming change in getsentry/sentry-javascript#13527
1 parent 7abfaf6 commit 0dddd89

File tree

2 files changed

+45
-38
lines changed

2 files changed

+45
-38
lines changed

static/app/views/performance/newTraceDetails/traceModels/traceTree.spec.tsx

+40-37
Original file line numberDiff line numberDiff line change
@@ -2857,47 +2857,50 @@ describe('TraceTree', () => {
28572857
expect(serverHandlerTransaction.parent).toBe(pageloadTransaction);
28582858
});
28592859
describe('expanded', () => {
2860-
it('server handler transaction becomes a child of browser request span if present', async () => {
2861-
const tree: TraceTree = TraceTree.FromTrace(
2862-
makeTrace({
2863-
transactions: [
2864-
makeTransaction({
2865-
transaction: 'SSR',
2866-
event_id: 'ssr',
2867-
project_slug: 'js',
2868-
['transaction.op']: 'http.server',
2869-
children: [
2870-
makeTransaction({
2871-
transaction: 'pageload',
2872-
['transaction.op']: 'pageload',
2873-
}),
2874-
],
2875-
}),
2876-
],
2877-
}),
2878-
null,
2879-
null
2880-
);
2860+
it.each([['browser'], ['browser.request']])(
2861+
'server handler transaction becomes a child of %s span if present',
2862+
async span_op => {
2863+
const tree: TraceTree = TraceTree.FromTrace(
2864+
makeTrace({
2865+
transactions: [
2866+
makeTransaction({
2867+
transaction: 'SSR',
2868+
event_id: 'ssr',
2869+
project_slug: 'js',
2870+
['transaction.op']: 'http.server',
2871+
children: [
2872+
makeTransaction({
2873+
transaction: 'pageload',
2874+
['transaction.op']: 'pageload',
2875+
}),
2876+
],
2877+
}),
2878+
],
2879+
}),
2880+
null,
2881+
null
2882+
);
28812883

2882-
MockApiClient.addMockResponse({
2883-
url: '/organizations/org-slug/events/js:ssr/?averageColumn=span.self_time&averageColumn=span.duration',
2884-
method: 'GET',
2885-
body: makeEvent({}, [makeSpan({description: 'request', op: 'browser'})]),
2886-
});
2884+
MockApiClient.addMockResponse({
2885+
url: '/organizations/org-slug/events/js:ssr/?averageColumn=span.self_time&averageColumn=span.duration',
2886+
method: 'GET',
2887+
body: makeEvent({}, [makeSpan({description: 'request', op: span_op})]),
2888+
});
28872889

2888-
tree.zoomIn(tree.list[1], true, {
2889-
api: new MockApiClient(),
2890-
organization: OrganizationFixture(),
2891-
});
2890+
tree.zoomIn(tree.list[1], true, {
2891+
api: new MockApiClient(),
2892+
organization: OrganizationFixture(),
2893+
});
28922894

2893-
await waitFor(() => tree.list.length === 4);
2894-
const browserRequestSpan = tree.list[1].children[0];
2895-
const ssrTransaction = browserRequestSpan.children[0];
2895+
await waitFor(() => tree.list.length === 4);
2896+
const browserRequestSpan = tree.list[1].children[0];
2897+
const ssrTransaction = browserRequestSpan.children[0];
28962898

2897-
assertSpanNode(browserRequestSpan);
2898-
assertTransactionNode(ssrTransaction);
2899-
expect(ssrTransaction.value.transaction).toBe('SSR');
2900-
});
2899+
assertSpanNode(browserRequestSpan);
2900+
assertTransactionNode(ssrTransaction);
2901+
expect(ssrTransaction.value.transaction).toBe('SSR');
2902+
}
2903+
);
29012904
it('server handler transaction becomes a direct child if there is no matching browser request span', async () => {
29022905
const tree: TraceTree = TraceTree.FromTrace(
29032906
makeTrace({

static/app/views/performance/newTraceDetails/traceModels/traceTree.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,11 @@ function isServerRequestHandlerTransactionNode(
230230
}
231231

232232
function isBrowserRequestSpan(value: TraceTree.Span): boolean {
233-
return value.op === 'browser' && value.description === 'request';
233+
return (
234+
// Adjust for SDK changes in https://github.com/getsentry/sentry-javascript/pull/13527
235+
value.op === 'browser.request' ||
236+
(value.op === 'browser' && value.description === 'request')
237+
);
234238
}
235239

236240
function getPageloadTransactionChildCount(

0 commit comments

Comments
 (0)