12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import {
- makeEventTransaction,
- makeSpan,
- makeTrace,
- makeTransaction,
- } from 'sentry/views/performance/newTraceDetails/traceModels/traceTreeTestUtils';
- import {TraceTree} from './traceTree';
- const start = new Date('2024-02-29T00:00:00Z').getTime() / 1e3;
- const traceMetadata = {replay: null, meta: null};
- const ssrTrace = makeTrace({
- transactions: [
- makeTransaction({
- start_timestamp: start,
- timestamp: start + 2,
- ['transaction.op']: 'http.server',
- children: [
- makeTransaction({
- start_timestamp: start,
- timestamp: start + 2,
- ['transaction.op']: 'pageload',
- children: [],
- }),
- ],
- }),
- ],
- });
- const ssrSpans = [
- makeSpan({
- op: 'tls.connect',
- start_timestamp: start,
- timestamp: start + 2,
- }),
- makeSpan({
- op: 'browser.request',
- description: 'browser',
- start_timestamp: start,
- timestamp: start + 2,
- }),
- ];
- describe('server side rendering', () => {
- it('reparents pageload transaction as parent of server handler', () => {
- const tree = TraceTree.FromTrace(ssrTrace, traceMetadata);
- const pageload = tree.root.children[0].children[0];
- const serverHandler = pageload.children[0];
- expect(serverHandler.parent).toBe(pageload);
- expect(pageload.parent).toBe(tree.root.children[0]);
- expect(tree.build().serialize()).toMatchSnapshot();
- });
- it('reparents server handler under browser request span', () => {
- const tree = TraceTree.FromTrace(ssrTrace, traceMetadata);
- TraceTree.FromSpans(
- tree.root.children[0].children[0],
- ssrSpans,
- makeEventTransaction()
- );
- expect(tree.build().serialize()).toMatchSnapshot();
- });
- it('does not reparent if server handler has multiple direct transaction children', () => {
- const tree = TraceTree.FromTrace(
- makeTrace({
- transactions: [
- makeTransaction({
- transaction: 'SSR',
- ['transaction.op']: 'http.server',
- children: [
- makeTransaction({
- transaction: 'pageload',
- ['transaction.op']: 'pageload',
- }),
- makeTransaction({
- transaction: 'pageload',
- ['transaction.op']: 'pageload',
- }),
- ],
- }),
- ],
- }),
- traceMetadata
- );
- expect(tree.build().serialize()).toMatchSnapshot();
- });
- });
|