Skip to content

Commit 9ad4d9b

Browse files
author
Luca Forstner
authored
ref: Remove startTransaction from integration and e2e tests (#10721)
1 parent f014ac6 commit 9ad4d9b

File tree

55 files changed

+345
-746
lines changed

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

+345
-746
lines changed
Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,23 @@
1-
async function run() {
2-
const transaction = Sentry.startTransaction({ name: 'test_transaction_1' });
3-
const span_1 = transaction.startChild({
4-
op: 'span_1',
5-
data: {
6-
foo: 'bar',
7-
baz: [1, 2, 3],
1+
Sentry.startSpan({ name: 'root_span' }, () => {
2+
Sentry.startSpan(
3+
{
4+
name: 'span_1',
5+
data: {
6+
foo: 'bar',
7+
baz: [1, 2, 3],
8+
},
89
},
9-
});
10-
11-
await new Promise(resolve => setTimeout(resolve, 1));
12-
13-
// span_1 finishes
14-
span_1.end();
10+
() => undefined,
11+
);
1512

1613
// span_2 doesn't finish
17-
const span_2 = transaction.startChild({ op: 'span_2' });
18-
await new Promise(resolve => setTimeout(resolve, 1));
19-
20-
const span_3 = transaction.startChild({ op: 'span_3' });
21-
await new Promise(resolve => setTimeout(resolve, 1));
14+
Sentry.startInactiveSpan({ name: 'span_2' });
2215

23-
// span_4 is the child of span_3 but doesn't finish.
24-
const span_4 = span_3.startChild({ op: 'span_4', data: { qux: 'quux' } });
16+
Sentry.startSpan({ name: 'span_3' }, () => {
17+
// span_4 is the child of span_3 but doesn't finish.
18+
Sentry.startInactiveSpan({ name: 'span_4', data: { qux: 'quux' } });
2519

26-
// span_5 is another child of span_3 but finishes.
27-
const span_5 = span_3.startChild({ op: 'span_5' }).end();
28-
29-
// span_3 also finishes
30-
span_3.end();
31-
32-
transaction.end();
33-
}
34-
35-
run();
20+
// span_5 is another child of span_3 but finishes.
21+
Sentry.startInactiveSpan({ name: 'span_5' }).end();
22+
});
23+
});

dev-packages/browser-integration-tests/suites/public-api/startTransaction/basic_usage/test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ sentryTest('should report a transaction in an envelope', async ({ getLocalTestPa
1212
const url = await getLocalTestPath({ testDir: __dirname });
1313
const transaction = await getFirstSentryEnvelopeRequest<SerializedEvent>(page, url);
1414

15-
expect(transaction.transaction).toBe('test_transaction_1');
15+
expect(transaction.transaction).toBe('root_span');
1616
expect(transaction.spans).toBeDefined();
1717
});
1818

19-
sentryTest('should report finished spans as children of the root transaction', async ({ getLocalTestPath, page }) => {
19+
sentryTest('should report finished spans as children of the root span', async ({ getLocalTestPath, page }) => {
2020
if (shouldSkipTracingTest()) {
2121
sentryTest.skip();
2222
}
@@ -31,17 +31,17 @@ sentryTest('should report finished spans as children of the root transaction', a
3131
const span_1 = transaction.spans?.[0];
3232

3333
expect(span_1).toBeDefined();
34-
expect(span_1!.op).toBe('span_1');
34+
expect(span_1!.description).toBe('span_1');
3535
expect(span_1!.parent_span_id).toEqual(rootSpanId);
3636
expect(span_1!.data).toMatchObject({ foo: 'bar', baz: [1, 2, 3] });
3737

3838
const span_3 = transaction.spans?.[1];
3939
expect(span_3).toBeDefined();
40-
expect(span_3!.op).toBe('span_3');
40+
expect(span_3!.description).toBe('span_3');
4141
expect(span_3!.parent_span_id).toEqual(rootSpanId);
4242

4343
const span_5 = transaction.spans?.[2];
4444
expect(span_5).toBeDefined();
45-
expect(span_5!.op).toBe('span_5');
45+
expect(span_5!.description).toBe('span_5');
4646
expect(span_5!.parent_span_id).toEqual(span_3!.span_id);
4747
});

dev-packages/browser-integration-tests/suites/public-api/startTransaction/circular_data/subject.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ const chicken = {};
22
const egg = { contains: chicken };
33
chicken.lays = egg;
44

5-
const transaction = Sentry.startTransaction({ name: 'circular_object_test_transaction', data: { chicken } });
6-
const span = transaction.startChild({ op: 'circular_object_test_span', data: { chicken } });
7-
8-
span.end();
9-
transaction.end();
5+
Sentry.startSpan({ name: 'circular_object_test_transaction', data: { chicken } }, () => {
6+
Sentry.startSpan({ op: 'circular_object_test_span', data: { chicken } }, () => undefined);
7+
});

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/backgroundtab-custom/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ window.Sentry = Sentry;
44

55
Sentry.init({
66
dsn: 'https://[email protected]/1337',
7-
integrations: [Sentry.browserTracingIntegration({ idleTimeout: 9000 })],
7+
integrations: [Sentry.browserTracingIntegration({ idleTimeout: 9000, instrumentPageLoad: false })],
88
tracesSampleRate: 1,
99
});

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/backgroundtab-custom/subject.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ document.getElementById('go-background').addEventListener('click', () => {
55
document.dispatchEvent(ev);
66
});
77

8-
document.getElementById('start-transaction').addEventListener('click', () => {
9-
window.transaction = Sentry.startTransaction({ name: 'test-transaction' });
10-
Sentry.getCurrentScope().setSpan(window.transaction);
8+
document.getElementById('start-span').addEventListener('click', () => {
9+
const span = Sentry.startInactiveSpan({ name: 'test-span' });
10+
window.span = span;
11+
Sentry.getCurrentScope().setSpan(span);
1112
});
13+
14+
window.getSpanJson = () => {
15+
return Sentry.spanToJSON(window.span);
16+
};

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/backgroundtab-custom/template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" />
55
</head>
66
<body>
7-
<button id="start-transaction">Start Transaction</button>
7+
<button id="start-span">Start Span</button>
88
<button id="go-background">New Tab</button>
99
</body>
1010
</html>
Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,37 @@
1-
import type { JSHandle } from '@playwright/test';
21
import { expect } from '@playwright/test';
3-
import type { Event } from '@sentry/types';
2+
import type { SpanJSON } from '@sentry/types';
43

54
import { sentryTest } from '../../../../utils/fixtures';
6-
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';
7-
8-
async function getPropertyValue(handle: JSHandle, prop: string) {
9-
return (await handle.getProperty(prop))?.jsonValue();
10-
}
5+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
116

127
sentryTest('should finish a custom transaction when the page goes background', async ({ getLocalTestPath, page }) => {
138
if (shouldSkipTracingTest()) {
149
sentryTest.skip();
1510
}
1611

1712
const url = await getLocalTestPath({ testDir: __dirname });
13+
page.goto(url);
1814

19-
const pageloadTransaction = await getFirstSentryEnvelopeRequest<Event>(page, url);
20-
expect(pageloadTransaction).toBeDefined();
21-
22-
await page.locator('#start-transaction').click();
23-
const transactionHandle = await page.evaluateHandle('window.transaction');
15+
await page.locator('#start-span').click();
16+
const spanJsonBefore: SpanJSON = await page.evaluate('window.getSpanJson()');
2417

25-
const id_before = await getPropertyValue(transactionHandle, 'span_id');
26-
const nameBefore = JSON.parse(await transactionHandle.evaluate((t: any) => JSON.stringify(t))).description;
27-
const status_before = await getPropertyValue(transactionHandle, 'status');
28-
const tags_before = await getPropertyValue(transactionHandle, 'tags');
18+
const id_before = spanJsonBefore.span_id;
19+
const description_before = spanJsonBefore.description;
20+
const status_before = spanJsonBefore.status;
2921

30-
expect(nameBefore).toBe('test-transaction');
22+
expect(description_before).toBe('test-span');
3123
expect(status_before).toBeUndefined();
32-
expect(tags_before).toStrictEqual({});
3324

3425
await page.locator('#go-background').click();
26+
const spanJsonAfter: SpanJSON = await page.evaluate('window.getSpanJson()');
3527

36-
const id_after = await getPropertyValue(transactionHandle, 'span_id');
37-
const nameAfter = JSON.parse(await transactionHandle.evaluate((t: any) => JSON.stringify(t))).description;
38-
const status_after = await getPropertyValue(transactionHandle, 'status');
39-
const tags_after = await getPropertyValue(transactionHandle, 'tags');
28+
const id_after = spanJsonAfter.span_id;
29+
const description_after = spanJsonAfter.description;
30+
const status_after = spanJsonAfter.status;
31+
const data_after = spanJsonAfter.data;
4032

4133
expect(id_before).toBe(id_after);
42-
expect(nameAfter).toBe('test-transaction');
34+
expect(description_after).toBe(description_before);
4335
expect(status_after).toBe('cancelled');
44-
expect(tags_after).toStrictEqual({ visibilitychange: 'document.hidden' });
36+
expect(data_after?.['sentry.cancellation_reason']).toBe('document.hidden');
4537
});

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/backgroundtab-pageload/test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,5 @@ sentryTest('should finish pageload transaction when the page goes background', a
1717

1818
expect(pageloadTransaction.contexts?.trace?.op).toBe('pageload');
1919
expect(pageloadTransaction.contexts?.trace?.status).toBe('cancelled');
20-
expect(pageloadTransaction.contexts?.trace?.tags).toMatchObject({
21-
visibilitychange: 'document.hidden',
22-
});
20+
expect(pageloadTransaction.contexts?.trace?.data?.['sentry.cancellation_reason']).toBe('document.hidden');
2321
});

dev-packages/browser-integration-tests/suites/tracing/browsertracing/backgroundtab-custom/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ window.Sentry = Sentry;
55

66
Sentry.init({
77
dsn: 'https://[email protected]/1337',
8-
integrations: [new Integrations.BrowserTracing({ idleTimeout: 9000 })],
8+
integrations: [new Integrations.BrowserTracing({ idleTimeout: 9000, startTransactionOnPageLoad: false })],
99
tracesSampleRate: 1,
1010
});

dev-packages/browser-integration-tests/suites/tracing/browsertracing/backgroundtab-custom/subject.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ document.getElementById('go-background').addEventListener('click', () => {
55
document.dispatchEvent(ev);
66
});
77

8-
document.getElementById('start-transaction').addEventListener('click', () => {
9-
window.transaction = Sentry.startTransaction({ name: 'test-transaction' });
10-
Sentry.getCurrentScope().setSpan(window.transaction);
8+
document.getElementById('start-span').addEventListener('click', () => {
9+
const span = Sentry.startInactiveSpan({ name: 'test-span' });
10+
window.span = span;
11+
Sentry.getCurrentScope().setSpan(span);
1112
});
13+
14+
window.getSpanJson = () => {
15+
return Sentry.spanToJSON(window.span);
16+
};

dev-packages/browser-integration-tests/suites/tracing/browsertracing/backgroundtab-custom/template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" />
55
</head>
66
<body>
7-
<button id="start-transaction">Start Transaction</button>
7+
<button id="start-span">Start Span</button>
88
<button id="go-background">New Tab</button>
99
</body>
1010
</html>
Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,37 @@
1-
import type { JSHandle } from '@playwright/test';
21
import { expect } from '@playwright/test';
3-
import type { Event } from '@sentry/types';
2+
import type { SpanJSON } from '@sentry/types';
43

54
import { sentryTest } from '../../../../utils/fixtures';
6-
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';
7-
8-
async function getPropertyValue(handle: JSHandle, prop: string) {
9-
return (await handle.getProperty(prop))?.jsonValue();
10-
}
5+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
116

127
sentryTest('should finish a custom transaction when the page goes background', async ({ getLocalTestPath, page }) => {
138
if (shouldSkipTracingTest()) {
149
sentryTest.skip();
1510
}
1611

1712
const url = await getLocalTestPath({ testDir: __dirname });
13+
page.goto(url);
1814

19-
const pageloadTransaction = await getFirstSentryEnvelopeRequest<Event>(page, url);
20-
expect(pageloadTransaction).toBeDefined();
21-
22-
await page.locator('#start-transaction').click();
23-
const transactionHandle = await page.evaluateHandle('window.transaction');
15+
await page.locator('#start-span').click();
16+
const spanJsonBefore: SpanJSON = await page.evaluate('window.getSpanJson()');
2417

25-
const id_before = await getPropertyValue(transactionHandle, 'span_id');
26-
const nameBefore = JSON.parse(await transactionHandle.evaluate((t: any) => JSON.stringify(t))).description;
27-
const status_before = await getPropertyValue(transactionHandle, 'status');
28-
const tags_before = await getPropertyValue(transactionHandle, 'tags');
18+
const id_before = spanJsonBefore.span_id;
19+
const description_before = spanJsonBefore.description;
20+
const status_before = spanJsonBefore.status;
2921

30-
expect(nameBefore).toBe('test-transaction');
22+
expect(description_before).toBe('test-span');
3123
expect(status_before).toBeUndefined();
32-
expect(tags_before).toStrictEqual({});
3324

3425
await page.locator('#go-background').click();
26+
const spanJsonAfter: SpanJSON = await page.evaluate('window.getSpanJson()');
3527

36-
const id_after = await getPropertyValue(transactionHandle, 'span_id');
37-
const nameAfter = JSON.parse(await transactionHandle.evaluate((t: any) => JSON.stringify(t))).description;
38-
const status_after = await getPropertyValue(transactionHandle, 'status');
39-
const tags_after = await getPropertyValue(transactionHandle, 'tags');
28+
const id_after = spanJsonAfter.span_id;
29+
const description_after = spanJsonAfter.description;
30+
const status_after = spanJsonAfter.status;
31+
const data_after = spanJsonAfter.data;
4032

4133
expect(id_before).toBe(id_after);
42-
expect(nameAfter).toBe('test-transaction');
34+
expect(description_after).toBe(description_before);
4335
expect(status_after).toBe('cancelled');
44-
expect(tags_after).toStrictEqual({ visibilitychange: 'document.hidden' });
36+
expect(data_after?.['sentry.cancellation_reason']).toBe('document.hidden');
4537
});

dev-packages/browser-integration-tests/suites/tracing/browsertracing/backgroundtab-pageload/test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,5 @@ sentryTest('should finish pageload transaction when the page goes background', a
1717

1818
expect(pageloadTransaction.contexts?.trace?.op).toBe('pageload');
1919
expect(pageloadTransaction.contexts?.trace?.status).toBe('cancelled');
20-
expect(pageloadTransaction.contexts?.trace?.tags).toMatchObject({
21-
visibilitychange: 'document.hidden',
22-
});
20+
expect(pageloadTransaction.contexts?.trace?.data?.['sentry.cancellation_reason']).toBe('document.hidden');
2321
});

dev-packages/e2e-tests/test-applications/nextjs-app-dir/app/layout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Link from 'next/link';
2-
import { TransactionContextProvider } from '../components/transaction-context';
2+
import { SpanContextProvider } from '../components/span-context';
33

44
export default function Layout({ children }: { children: React.ReactNode }) {
55
return (
@@ -36,7 +36,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
3636
<Link href="/redirect">/redirect</Link>
3737
</li>
3838
</ul>
39-
<TransactionContextProvider>{children}</TransactionContextProvider>
39+
<SpanContextProvider>{children}</SpanContextProvider>
4040
</div>
4141
</body>
4242
</html>

dev-packages/e2e-tests/test-applications/nextjs-app-dir/components/client-error-debug-tools.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import { captureException } from '@sentry/nextjs';
44
import { useContext, useState } from 'react';
5-
import { TransactionContext } from './transaction-context';
5+
import { SpanContext } from './span-context';
66

77
export function ClientErrorDebugTools() {
8-
const transactionContextValue = useContext(TransactionContext);
9-
const [transactionName, setTransactionName] = useState<string>('');
8+
const spanContextValue = useContext(SpanContext);
9+
const [spanName, setSpanName] = useState<string>('');
1010

1111
const [isFetchingAPIRoute, setIsFetchingAPIRoute] = useState<boolean>();
1212
const [isFetchingEdgeAPIRoute, setIsFetchingEdgeAPIRoute] = useState<boolean>();
@@ -19,31 +19,31 @@ export function ClientErrorDebugTools() {
1919

2020
return (
2121
<div>
22-
{transactionContextValue.transactionActive ? (
22+
{spanContextValue.spanActive ? (
2323
<button
2424
onClick={() => {
25-
transactionContextValue.stop();
26-
setTransactionName('');
25+
spanContextValue.stop();
26+
setSpanName('');
2727
}}
2828
>
29-
Stop transaction
29+
Stop span
3030
</button>
3131
) : (
3232
<>
3333
<input
3434
type="text"
35-
placeholder="Transaction name"
36-
value={transactionName}
35+
placeholder="Span name"
36+
value={spanName}
3737
onChange={e => {
38-
setTransactionName(e.target.value);
38+
setSpanName(e.target.value);
3939
}}
4040
/>
4141
<button
4242
onClick={() => {
43-
transactionContextValue.start(transactionName);
43+
spanContextValue.start(spanName);
4444
}}
4545
>
46-
Start transaction
46+
Start span
4747
</button>
4848
</>
4949
)}

0 commit comments

Comments
 (0)