import {mountWithTheme} from 'sentry-test/enzyme'; import {initializeOrg} from 'sentry-test/initializeOrg'; import EventView from 'sentry/utils/discover/eventView'; import {OrganizationContext} from 'sentry/views/organizationContext'; import TransactionHeader from 'sentry/views/performance/transactionSummary/header'; import Tab from 'sentry/views/performance/transactionSummary/tabs'; type InitialOpts = { features?: string[]; platform?: string; }; function initializeData(opts?: InitialOpts) { const {features, platform} = opts ?? {}; const project = TestStubs.Project({platform}); const organization = TestStubs.Organization({ projects: [project], features, }); const initialData = initializeOrg({ organization, router: { location: { query: { project: project.id, }, }, }, project: project.id, projects: [], }); const router = initialData.router; const eventView = EventView.fromSavedQuery({ id: undefined, version: 2, name: '', fields: ['transaction.status'], // unused fields projects: [parseInt(project.id, 10)], }); return { project, organization, router, eventView, }; } const WrappedComponent = ({ hasWebVitals, platform, features, }: { hasWebVitals: 'yes' | 'no' | 'maybe'; } & InitialOpts) => { const {project, organization, router, eventView} = initializeData({features, platform}); return ( ); }; describe('Performance > Transaction Summary Header', function () { let wrapper; afterEach(function () { MockApiClient.clearMockResponses(); wrapper.unmount(); }); it('should render web vitals tab when yes', async function () { wrapper = mountWithTheme(); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="web-vitals-tab"]').exists()).toBeTruthy(); }); it('should not render web vitals tab when no', async function () { wrapper = mountWithTheme(); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="web-vitals-tab"]').exists()).toBeFalsy(); }); it('should render web vitals tab when maybe and is frontend platform', async function () { wrapper = mountWithTheme( ); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="web-vitals-tab"]').exists()).toBeTruthy(); }); it('should render web vitals tab when maybe and has measurements', async function () { MockApiClient.addMockResponse({ url: '/organizations/org-slug/events-has-measurements/', body: {measurements: true}, }); wrapper = mountWithTheme(); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="web-vitals-tab"]').exists()).toBeTruthy(); }); it('should not render web vitals tab when maybe and has no measurements', async function () { MockApiClient.addMockResponse({ url: '/organizations/org-slug/events-has-measurements/', body: {measurements: false}, }); wrapper = mountWithTheme(); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="web-vitals-tab"]').exists()).toBeFalsy(); }); it('should render spans tab with feature', async function () { wrapper = mountWithTheme( ); await tick(); wrapper.update(); expect(wrapper.find('ListLink[data-test-id="spans-tab"]').exists()).toBeTruthy(); }); });