From d71be7638db57dba7088efb733e6b6f85e92c5a1 Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Mon, 15 Apr 2024 13:37:40 -0400 Subject: [PATCH 1/7] chore: Register flag that consolidates all span-first UI --- src/sentry/conf/server.py | 2 ++ src/sentry/features/temporary.py | 1 + src/sentry/options/defaults.py | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index a24699f5ce9947..f67001c887c456 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -1902,6 +1902,8 @@ def custom_parameter_sort(parameter: dict) -> tuple[str, int]: "organizations:sso-saml2": True, # Enable standalone span ingestion "organizations:standalone-span-ingestion": False, + # A single flag for all the new performance UI that relies on span ingestion + "organizations:spans-first-ui": False, # Enable the aggregate span waterfall view "organizations:starfish-aggregate-span-waterfall": False, # Enables the resource module ui diff --git a/src/sentry/features/temporary.py b/src/sentry/features/temporary.py index d72898a2b05a09..bc8d5ce495735e 100644 --- a/src/sentry/features/temporary.py +++ b/src/sentry/features/temporary.py @@ -232,6 +232,7 @@ def register_temporary_features(manager: FeatureManager): manager.add("organizations:sourcemaps-bundle-flat-file-indexing", OrganizationFeature, FeatureHandlerStrategy.REMOTE) manager.add("organizations:sourcemaps-upload-release-as-artifact-bundle", OrganizationFeature, FeatureHandlerStrategy.REMOTE) manager.add("organizations:stacktrace-processing-caching", OrganizationFeature, FeatureHandlerStrategy.INTERNAL) + manager.add("organizations:spans-first-ui", OrganizationFeature, FeatureHandlerStrategy.INTERNAL) manager.add("organizations:standalone-span-ingestion", OrganizationFeature, FeatureHandlerStrategy.INTERNAL) manager.add("organizations:starfish-aggregate-span-waterfall", OrganizationFeature, FeatureHandlerStrategy.REMOTE) manager.add("organizations:starfish-browser-resource-module-bundle-analysis", OrganizationFeature, FeatureHandlerStrategy.REMOTE) diff --git a/src/sentry/options/defaults.py b/src/sentry/options/defaults.py index 3c721080ff1a9c..e384eb9c70e7a9 100644 --- a/src/sentry/options/defaults.py +++ b/src/sentry/options/defaults.py @@ -1740,6 +1740,12 @@ default=1.0, flags=FLAG_AUTOMATOR_MODIFIABLE, ) # hours +register( + "performance.spans-first-ui.enable", + type=Bool, + default=False, + flags=FLAG_AUTOMATOR_MODIFIABLE, +) register( "performance.traces.query_timestamp_projects", type=Bool, From 9b24574d0c734a1e0fe0d312d2ca012021ec451b Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Mon, 15 Apr 2024 14:29:59 -0400 Subject: [PATCH 2/7] automator flag in getsentry --- src/sentry/options/defaults.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/sentry/options/defaults.py b/src/sentry/options/defaults.py index e384eb9c70e7a9..3c721080ff1a9c 100644 --- a/src/sentry/options/defaults.py +++ b/src/sentry/options/defaults.py @@ -1740,12 +1740,6 @@ default=1.0, flags=FLAG_AUTOMATOR_MODIFIABLE, ) # hours -register( - "performance.spans-first-ui.enable", - type=Bool, - default=False, - flags=FLAG_AUTOMATOR_MODIFIABLE, -) register( "performance.traces.query_timestamp_projects", type=Bool, From 324d527dcd40ef1504627264f18311ca98edd1b9 Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Mon, 15 Apr 2024 14:54:13 -0400 Subject: [PATCH 3/7] performance database view --- .../components/events/interfaces/spans/spanDetail.spec.tsx | 2 +- .../events/interfaces/spans/spanSummaryButton.tsx | 2 +- static/app/components/sidebar/index.tsx | 4 ++-- .../app/views/performance/browser/resources/index.spec.tsx | 6 +----- .../resources/resourceSummaryPage/sampleImages.spec.tsx | 6 +----- .../performance/browser/webVitals/pageOverview.spec.tsx | 6 +++--- .../browser/webVitals/webVitalsLandingPage.spec.tsx | 2 +- .../app/views/performance/database/databaseLandingPage.tsx | 2 +- .../views/performance/database/databaseSpanSummaryPage.tsx | 2 +- .../views/performance/landing/views/allTransactionsView.tsx | 2 +- static/app/views/performance/landing/views/backendView.tsx | 2 +- 11 files changed, 14 insertions(+), 22 deletions(-) diff --git a/static/app/components/events/interfaces/spans/spanDetail.spec.tsx b/static/app/components/events/interfaces/spans/spanDetail.spec.tsx index 96ff2867a9f958..e19b3c2598d439 100644 --- a/static/app/components/events/interfaces/spans/spanDetail.spec.tsx +++ b/static/app/components/events/interfaces/spans/spanDetail.spec.tsx @@ -150,7 +150,7 @@ describe('SpanDetail', function () { }), organization: OrganizationFixture({ ...organization, - features: ['performance-database-view'], + features: ['spans-first-ui'], }), }) ); diff --git a/static/app/components/events/interfaces/spans/spanSummaryButton.tsx b/static/app/components/events/interfaces/spans/spanSummaryButton.tsx index 79cc86c3100767..45968eb7ff1206 100644 --- a/static/app/components/events/interfaces/spans/spanSummaryButton.tsx +++ b/static/app/components/events/interfaces/spans/spanSummaryButton.tsx @@ -29,7 +29,7 @@ function SpanSummaryButton(props: Props) { const resolvedModule = resolveSpanModule(sentryTags.op, sentryTags.category); if ( - organization.features.includes('performance-database-view') && + organization.features.includes('spans-first-ui') && resolvedModule === ModuleName.DB ) { return ( diff --git a/static/app/components/sidebar/index.tsx b/static/app/components/sidebar/index.tsx index 5020357cef3994..86490e892feca6 100644 --- a/static/app/components/sidebar/index.tsx +++ b/static/app/components/sidebar/index.tsx @@ -245,7 +245,7 @@ function Sidebar() { {(() => { // If Database View or Web Vitals View is enabled, show a Performance accordion with a Database and/or Web Vitals sub-item if ( - organization.features.includes('performance-database-view') || + organization.features.includes('spans-first-ui') || organization.features.includes('starfish-browser-webvitals') || organization.features.includes('performance-screens-view') || organization.features.includes('performance-http-view') || @@ -260,7 +260,7 @@ function Sidebar() { to={`/organizations/${organization.slug}/performance/`} id="performance" > - + = {}; describe('ResourcesLandingPage', function () { const organization = OrganizationFixture({ - features: [ - 'starfish-browser-resource-module-ui', - 'starfish-view', - 'performance-database-view', - ], + features: ['starfish-browser-resource-module-ui', 'starfish-view', 'spans-first-ui'], }); beforeEach(() => { diff --git a/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx b/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx index ef992647127ea0..a22a3fe3307f43 100644 --- a/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx +++ b/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx @@ -20,11 +20,7 @@ jest.mock('sentry/utils/useOrganization'); describe('SampleImages', function () { const organization = OrganizationFixture({ - features: [ - 'starfish-browser-resource-module-ui', - 'starfish-view', - 'performance-database-view', - ], + features: ['starfish-browser-resource-module-ui', 'starfish-view', 'spans-first-ui'], }); beforeEach(() => { diff --git a/static/app/views/performance/browser/webVitals/pageOverview.spec.tsx b/static/app/views/performance/browser/webVitals/pageOverview.spec.tsx index c396f53b19e8e2..7f9cfefae3af22 100644 --- a/static/app/views/performance/browser/webVitals/pageOverview.spec.tsx +++ b/static/app/views/performance/browser/webVitals/pageOverview.spec.tsx @@ -13,7 +13,7 @@ jest.mock('sentry/utils/useOrganization'); describe('PageOverview', function () { const organization = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'performance-database-view'], + features: ['starfish-browser-webvitals', 'spans-first-ui'], }); let eventsMock; @@ -85,7 +85,7 @@ describe('PageOverview', function () { it('renders interaction samples', async () => { const organizationWithInp = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'performance-database-view'], + features: ['starfish-browser-webvitals', 'spans-first-ui'], }); jest.mocked(useOrganization).mockReturnValue(organizationWithInp); jest.mocked(useLocation).mockReturnValue({ @@ -130,7 +130,7 @@ describe('PageOverview', function () { it('escapes transaction name before querying discover', async () => { const organizationWithInp = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'performance-database-view'], + features: ['starfish-browser-webvitals', 'spans-first-ui'], }); jest.mocked(useOrganization).mockReturnValue(organizationWithInp); jest.mocked(useLocation).mockReturnValue({ diff --git a/static/app/views/performance/browser/webVitals/webVitalsLandingPage.spec.tsx b/static/app/views/performance/browser/webVitals/webVitalsLandingPage.spec.tsx index 371568bada9fdd..14c1fbd2cb0d71 100644 --- a/static/app/views/performance/browser/webVitals/webVitalsLandingPage.spec.tsx +++ b/static/app/views/performance/browser/webVitals/webVitalsLandingPage.spec.tsx @@ -13,7 +13,7 @@ jest.mock('sentry/utils/useOrganization'); describe('WebVitalsLandingPage', function () { const organization = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'performance-database-view'], + features: ['starfish-browser-webvitals', 'spans-first-ui'], }); beforeEach(function () { diff --git a/static/app/views/performance/database/databaseLandingPage.tsx b/static/app/views/performance/database/databaseLandingPage.tsx index 8100b0d47dbc11..d7a2c6bdf4215a 100644 --- a/static/app/views/performance/database/databaseLandingPage.tsx +++ b/static/app/views/performance/database/databaseLandingPage.tsx @@ -261,7 +261,7 @@ function LandingPageWithProviders() { diff --git a/static/app/views/performance/database/databaseSpanSummaryPage.tsx b/static/app/views/performance/database/databaseSpanSummaryPage.tsx index 7df76a3b4e9896..61f37a6594d1e5 100644 --- a/static/app/views/performance/database/databaseSpanSummaryPage.tsx +++ b/static/app/views/performance/database/databaseSpanSummaryPage.tsx @@ -129,7 +129,7 @@ function SpanSummaryPage({params}: Props) { diff --git a/static/app/views/performance/landing/views/allTransactionsView.tsx b/static/app/views/performance/landing/views/allTransactionsView.tsx index 6f01e22afba7d4..6c9dc3ae7eb00f 100644 --- a/static/app/views/performance/landing/views/allTransactionsView.tsx +++ b/static/app/views/performance/landing/views/allTransactionsView.tsx @@ -45,7 +45,7 @@ export function AllTransactionsView(props: BasePerformanceViewProps) { props.organization.features.includes('performance-new-trends') && canUseMetricsData(props.organization) ) { - if (props.organization.features.includes('performance-database-view')) { + if (props.organization.features.includes('spans-first-ui')) { doubleChartRowCharts.unshift(PerformanceWidgetSetting.MOST_RELATED_ISSUES); doubleChartRowCharts.unshift(PerformanceWidgetSetting.MOST_CHANGED); doubleChartRowCharts.unshift(PerformanceWidgetSetting.MOST_TIME_SPENT_DB_QUERIES); diff --git a/static/app/views/performance/landing/views/backendView.tsx b/static/app/views/performance/landing/views/backendView.tsx index ece02d3fb72b0f..674cffeeae1a5a 100644 --- a/static/app/views/performance/landing/views/backendView.tsx +++ b/static/app/views/performance/landing/views/backendView.tsx @@ -69,7 +69,7 @@ export function BackendView(props: BasePerformanceViewProps) { doubleChartRowCharts.push(PerformanceWidgetSetting.MOST_CHANGED); } - if (props.organization.features.includes('performance-database-view')) { + if (props.organization.features.includes('spans-first-ui')) { doubleChartRowCharts.unshift(PerformanceWidgetSetting.MOST_TIME_SPENT_DB_QUERIES); } } else { From b3f41bfb662ead5b9dd7f436c779127c8ba1660c Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Mon, 15 Apr 2024 17:14:14 -0400 Subject: [PATCH 4/7] check in progress --- .../components/events/interfaces/spans/spanSummaryButton.tsx | 2 +- static/app/components/sidebar/index.tsx | 2 +- static/app/views/performance/browser/resources/index.spec.tsx | 2 +- static/app/views/performance/browser/resources/index.tsx | 2 +- .../performance/browser/resources/resourceSummaryPage/index.tsx | 2 +- .../browser/resources/resourceSummaryPage/sampleImages.spec.tsx | 2 +- .../views/performance/browser/resources/resourceView/index.tsx | 2 +- .../app/views/performance/landing/views/frontendOtherView.tsx | 2 +- .../views/settings/projectPerformance/projectPerformance.tsx | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/static/app/components/events/interfaces/spans/spanSummaryButton.tsx b/static/app/components/events/interfaces/spans/spanSummaryButton.tsx index 45968eb7ff1206..19fa2b9571873b 100644 --- a/static/app/components/events/interfaces/spans/spanSummaryButton.tsx +++ b/static/app/components/events/interfaces/spans/spanSummaryButton.tsx @@ -48,7 +48,7 @@ function SpanSummaryButton(props: Props) { } if ( - organization.features.includes('starfish-browser-resource-module-ui') && + organization.features.includes('spans-first-ui') && resolvedModule === ModuleName.RESOURCE && resourceSummaryAvailable(sentryTags.op) ) { diff --git a/static/app/components/sidebar/index.tsx b/static/app/components/sidebar/index.tsx index 86490e892feca6..8acbbc6d2f4e30 100644 --- a/static/app/components/sidebar/index.tsx +++ b/static/app/components/sidebar/index.tsx @@ -335,7 +335,7 @@ function Sidebar() { isNew /> - + {t('Resources')}} diff --git a/static/app/views/performance/browser/resources/index.spec.tsx b/static/app/views/performance/browser/resources/index.spec.tsx index b6d1958bd2da34..4e01f122af51a8 100644 --- a/static/app/views/performance/browser/resources/index.spec.tsx +++ b/static/app/views/performance/browser/resources/index.spec.tsx @@ -29,7 +29,7 @@ const requestMocks: Record = {}; describe('ResourcesLandingPage', function () { const organization = OrganizationFixture({ - features: ['starfish-browser-resource-module-ui', 'starfish-view', 'spans-first-ui'], + features: ['spans-first-ui', 'starfish-view'], }); beforeEach(() => { diff --git a/static/app/views/performance/browser/resources/index.tsx b/static/app/views/performance/browser/resources/index.tsx index bb2d3412b5cbde..71fd65fc48c202 100644 --- a/static/app/views/performance/browser/resources/index.tsx +++ b/static/app/views/performance/browser/resources/index.tsx @@ -37,7 +37,7 @@ function ResourcesLandingPage() { diff --git a/static/app/views/performance/browser/resources/resourceSummaryPage/index.tsx b/static/app/views/performance/browser/resources/resourceSummaryPage/index.tsx index 4726b69374e8a5..d6c903a429cbb3 100644 --- a/static/app/views/performance/browser/resources/resourceSummaryPage/index.tsx +++ b/static/app/views/performance/browser/resources/resourceSummaryPage/index.tsx @@ -78,7 +78,7 @@ function ResourceSummary() { diff --git a/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx b/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx index a22a3fe3307f43..4d5eaa4bbbf3b7 100644 --- a/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx +++ b/static/app/views/performance/browser/resources/resourceSummaryPage/sampleImages.spec.tsx @@ -20,7 +20,7 @@ jest.mock('sentry/utils/useOrganization'); describe('SampleImages', function () { const organization = OrganizationFixture({ - features: ['starfish-browser-resource-module-ui', 'starfish-view', 'spans-first-ui'], + features: ['starfish-view', 'spans-first-ui'], }); beforeEach(() => { diff --git a/static/app/views/performance/browser/resources/resourceView/index.tsx b/static/app/views/performance/browser/resources/resourceView/index.tsx index 72e8631dc57111..6355ccdf7fa226 100644 --- a/static/app/views/performance/browser/resources/resourceView/index.tsx +++ b/static/app/views/performance/browser/resources/resourceView/index.tsx @@ -86,7 +86,7 @@ function ResourceView() { function ResourceTypeSelector({value}: {value?: string}) { const location = useLocation(); const {features} = useOrganization(); - const hasImageView = features.includes('starfish-browser-resource-module-image-view'); + const hasImageView = features.includes('spans-first-ui'); const options: Option[] = [ {value: '', label: 'All'}, diff --git a/static/app/views/performance/landing/views/frontendOtherView.tsx b/static/app/views/performance/landing/views/frontendOtherView.tsx index 055ad61e194ebf..2a98191d264547 100644 --- a/static/app/views/performance/landing/views/frontendOtherView.tsx +++ b/static/app/views/performance/landing/views/frontendOtherView.tsx @@ -37,7 +37,7 @@ export function FrontendOtherView(props: BasePerformanceViewProps) { PerformanceWidgetSetting.SLOW_RESOURCE_OPS, ]; - if (props.organization.features.includes('starfish-browser-resource-module-ui')) { + if (props.organization.features.includes('spans-first-ui')) { doubleChartRowCharts.unshift(PerformanceWidgetSetting.MOST_TIME_CONSUMING_RESOURCES); } diff --git a/static/app/views/settings/projectPerformance/projectPerformance.tsx b/static/app/views/settings/projectPerformance/projectPerformance.tsx index f78f76cd461e21..38f9c4b37afe40 100644 --- a/static/app/views/settings/projectPerformance/projectPerformance.tsx +++ b/static/app/views/settings/projectPerformance/projectPerformance.tsx @@ -841,7 +841,7 @@ class ProjectPerformance extends DeprecatedAsyncView { {({hasAccess}) => ( - +
Date: Tue, 16 Apr 2024 11:01:44 -0400 Subject: [PATCH 5/7] more flags --- static/app/components/sidebar/index.tsx | 11 ++++------- .../browser/webVitals/pageOverview.spec.tsx | 6 +++--- .../performance/browser/webVitals/pageOverview.tsx | 2 +- .../browser/webVitals/webVitalsLandingPage.spec.tsx | 2 +- .../browser/webVitals/webVitalsLandingPage.tsx | 2 +- .../views/performance/landing/views/mobileView.tsx | 2 +- .../starfish/components/spanDescription.spec.tsx | 4 +--- .../app/views/starfish/modules/mobile/appStartup.tsx | 2 +- .../views/starfish/modules/mobile/pageload.spec.tsx | 6 +----- .../app/views/starfish/modules/mobile/pageload.tsx | 4 +--- static/app/views/starfish/views/screens/index.tsx | 4 +--- .../views/screens/screenLoadSpans/charts.tsx | 4 +--- .../views/screens/screenLoadSpans/eventSamples.tsx | 4 +--- .../views/screens/screenLoadSpans/index.spec.tsx | 12 ++---------- .../starfish/views/screens/screenLoadSpans/index.tsx | 4 +--- .../views/screens/screenLoadSpans/metricsRibbon.tsx | 4 +--- .../screenLoadSpans/samples/samplesContainer.tsx | 4 +--- .../views/screens/screenLoadSpans/table.spec.tsx | 2 +- .../starfish/views/screens/screenLoadSpans/table.tsx | 8 ++------ 19 files changed, 26 insertions(+), 61 deletions(-) diff --git a/static/app/components/sidebar/index.tsx b/static/app/components/sidebar/index.tsx index 8acbbc6d2f4e30..da4f767148d5de 100644 --- a/static/app/components/sidebar/index.tsx +++ b/static/app/components/sidebar/index.tsx @@ -246,11 +246,8 @@ function Sidebar() { // If Database View or Web Vitals View is enabled, show a Performance accordion with a Database and/or Web Vitals sub-item if ( organization.features.includes('spans-first-ui') || - organization.features.includes('starfish-browser-webvitals') || - organization.features.includes('performance-screens-view') || organization.features.includes('performance-http-view') || - organization.features.includes('performance-cache-view') || - organization.features.includes('starfish-browser-resource-module-ui') + organization.features.includes('performance-cache-view') ) { return ( - + } /> - + } /> - + { const organizationWithInp = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'spans-first-ui'], + features: ['spans-first-ui'], }); jest.mocked(useOrganization).mockReturnValue(organizationWithInp); jest.mocked(useLocation).mockReturnValue({ @@ -130,7 +130,7 @@ describe('PageOverview', function () { it('escapes transaction name before querying discover', async () => { const organizationWithInp = OrganizationFixture({ - features: ['starfish-browser-webvitals', 'spans-first-ui'], + features: ['spans-first-ui'], }); jest.mocked(useOrganization).mockReturnValue(organizationWithInp); jest.mocked(useLocation).mockReturnValue({ diff --git a/static/app/views/performance/browser/webVitals/pageOverview.tsx b/static/app/views/performance/browser/webVitals/pageOverview.tsx index 0d625776869a58..0df4c10dbe8913 100644 --- a/static/app/views/performance/browser/webVitals/pageOverview.tsx +++ b/static/app/views/performance/browser/webVitals/pageOverview.tsx @@ -140,7 +140,7 @@ export default function PageOverview() { diff --git a/static/app/views/performance/landing/views/mobileView.tsx b/static/app/views/performance/landing/views/mobileView.tsx index 7eb9fd72c3ce0c..483f3fa0b49926 100644 --- a/static/app/views/performance/landing/views/mobileView.tsx +++ b/static/app/views/performance/landing/views/mobileView.tsx @@ -40,7 +40,7 @@ export function MobileView(props: BasePerformanceViewProps) { ] ); } - if (organization.features.includes('performance-screens-view')) { + if (organization.features.includes('spans-first-ui')) { doubleRowAllowedCharts[0] = PerformanceWidgetSetting.SLOW_SCREENS_BY_TTID; } if ( diff --git a/static/app/views/starfish/components/spanDescription.spec.tsx b/static/app/views/starfish/components/spanDescription.spec.tsx index e46d9847e8ab72..82dc5ae4330d8f 100644 --- a/static/app/views/starfish/components/spanDescription.spec.tsx +++ b/static/app/views/starfish/components/spanDescription.spec.tsx @@ -13,9 +13,7 @@ jest.mock('sentry/utils/useOrganization'); jest.mock('sentry/utils/usePageFilters'); describe('DatabaseSpanDescription', function () { - const organization = OrganizationFixture({ - features: ['performance-database-view-query-source'], - }); + const organization = OrganizationFixture(); jest.mocked(useOrganization).mockReturnValue(organization); const project = ProjectFixture(); diff --git a/static/app/views/starfish/modules/mobile/appStartup.tsx b/static/app/views/starfish/modules/mobile/appStartup.tsx index 7f5b30529f3ac9..c9772acb2c15f6 100644 --- a/static/app/views/starfish/modules/mobile/appStartup.tsx +++ b/static/app/views/starfish/modules/mobile/appStartup.tsx @@ -42,7 +42,7 @@ export default function InitializationModule() { }, [location]); return ( - + diff --git a/static/app/views/starfish/modules/mobile/pageload.spec.tsx b/static/app/views/starfish/modules/mobile/pageload.spec.tsx index 07882438d7428d..5e2a13d53b8e18 100644 --- a/static/app/views/starfish/modules/mobile/pageload.spec.tsx +++ b/static/app/views/starfish/modules/mobile/pageload.spec.tsx @@ -23,11 +23,7 @@ jest.mock('sentry/utils/useProjects'); describe('PageloadModule', function () { const project = ProjectFixture({platform: 'react-native'}); const organization = OrganizationFixture({ - features: [ - 'performance-screens-view', - 'mobile-ttid-ttfd-contribution', - 'performance-screens-platform-selector', - ], + features: ['spans-first-ui'], projects: [project], }); jest.mocked(useOrganization).mockReturnValue(organization); diff --git a/static/app/views/starfish/modules/mobile/pageload.tsx b/static/app/views/starfish/modules/mobile/pageload.tsx index 0e552502b532da..989f18dce7effb 100644 --- a/static/app/views/starfish/modules/mobile/pageload.tsx +++ b/static/app/views/starfish/modules/mobile/pageload.tsx @@ -59,9 +59,7 @@ export default function PageloadModule() { /> {t('Screen Loads')} - {organization.features.includes( - 'performance-screens-platform-selector' - ) && + {organization.features.includes('spans-first-ui') && project && isCrossPlatform(project) && } diff --git a/static/app/views/starfish/views/screens/index.tsx b/static/app/views/starfish/views/screens/index.tsx index ab00b911d89120..b497068d54c666 100644 --- a/static/app/views/starfish/views/screens/index.tsx +++ b/static/app/views/starfish/views/screens/index.tsx @@ -122,9 +122,7 @@ export function ScreensView({yAxes, additionalFilters, chartHeight, project}: Pr const {query: locationQuery} = location; const cursor = decodeScalar(location.query?.[MobileCursors.SCREENS_TABLE]); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const yAxisCols = yAxes.map(val => YAXIS_COLUMNS[val]); const platform = diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/charts.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/charts.tsx index 151d360b655162..9fbdab640d2996 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/charts.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/charts.tsx @@ -76,9 +76,7 @@ export function ScreenCharts({yAxes, additionalFilters, project}: Props) { isLoading: isReleasesLoading, } = useReleaseSelection(); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const platform = decodeScalar(location.query[PLATFORM_QUERY_PARAM]) ?? localStorage.getItem(PLATFORM_LOCAL_STORAGE_KEY) ?? diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/eventSamples.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/eventSamples.tsx index 9193286a530317..817c0b99ed7dbd 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/eventSamples.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/eventSamples.tsx @@ -53,9 +53,7 @@ export function ScreenLoadEventSamples({ const deviceClass = decodeScalar(location.query['device.class']); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const platform = decodeScalar(location.query[PLATFORM_QUERY_PARAM]) ?? localStorage.getItem(PLATFORM_LOCAL_STORAGE_KEY) ?? diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/index.spec.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/index.spec.tsx index 68f55e348acdaf..5f00386c821b55 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/index.spec.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/index.spec.tsx @@ -117,11 +117,7 @@ describe('Screen Summary', function () { beforeEach(function () { const project = ProjectFixture({platform: 'react-native'}); organization = OrganizationFixture({ - features: [ - 'performance-screens-view', - 'mobile-ttid-ttfd-contribution', - 'performance-screens-platform-selector', - ], + features: ['spans-first-ui'], projects: [project], }); mockResponses(organization, project); @@ -217,11 +213,7 @@ describe('Screen Summary', function () { beforeEach(function () { const project = ProjectFixture({platform: 'android'}); organization = OrganizationFixture({ - features: [ - 'performance-screens-view', - 'mobile-ttid-ttfd-contribution', - 'performance-screens-platform-selector', - ], + features: ['spans-first-ui'], projects: [project], }); mockResponses(organization, project); diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/index.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/index.tsx index 2100965f17047c..1b72dfd7bf81dd 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/index.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/index.tsx @@ -108,9 +108,7 @@ function ScreenLoadSpans() { {transactionName} - {organization.features.includes( - 'performance-screens-platform-selector' - ) && + {organization.features.includes('spans-first-ui') && project && isCrossPlatform(project) && } diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/metricsRibbon.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/metricsRibbon.tsx index 2033d5742a1f7d..736157f555df96 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/metricsRibbon.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/metricsRibbon.tsx @@ -60,9 +60,7 @@ export function MetricsRibbon({ isLoading: isReleasesLoading, } = useReleaseSelection(); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const platform = decodeScalar(location.query[PLATFORM_QUERY_PARAM]) ?? localStorage.getItem(PLATFORM_LOCAL_STORAGE_KEY) ?? diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/samples/samplesContainer.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/samples/samplesContainer.tsx index 0d2b5b04d1746a..8cc6fd5ec650e5 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/samples/samplesContainer.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/samples/samplesContainer.tsx @@ -62,9 +62,7 @@ export function ScreenLoadSampleContainer({ const organization = useOrganization(); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const platform = decodeScalar(location.query[PLATFORM_QUERY_PARAM]) ?? localStorage.getItem(PLATFORM_LOCAL_STORAGE_KEY) ?? diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/table.spec.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/table.spec.tsx index eac23d573397e9..9d0364d2e6d051 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/table.spec.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/table.spec.tsx @@ -15,7 +15,7 @@ jest.mock('sentry/utils/usePageFilters'); describe('ScreenLoadSpansTable', function () { const organization = OrganizationFixture({ - features: ['performance-screens-view', 'mobile-ttid-ttfd-contribution'], + features: ['spans-first-ui'], }); jest.mocked(useOrganization).mockReturnValue(organization); diff --git a/static/app/views/starfish/views/screens/screenLoadSpans/table.tsx b/static/app/views/starfish/views/screens/screenLoadSpans/table.tsx index afde42edf05f39..44449bcc89f362 100644 --- a/static/app/views/starfish/views/screens/screenLoadSpans/table.tsx +++ b/static/app/views/starfish/views/screens/screenLoadSpans/table.tsx @@ -76,9 +76,7 @@ export function ScreenLoadSpansTable({ `transaction:"${transaction}"`, ]); - const hasPlatformSelectFeature = organization.features.includes( - 'performance-screens-platform-selector' - ); + const hasPlatformSelectFeature = organization.features.includes('spans-first-ui'); const platform = decodeScalar(location.query[PLATFORM_QUERY_PARAM]) ?? localStorage.getItem(PLATFORM_LOCAL_STORAGE_KEY) ?? @@ -386,9 +384,7 @@ export function ScreenLoadSpansTable({ String(SPAN_DESCRIPTION), `avg_if(${SPAN_SELF_TIME},release,${primaryRelease})`, `avg_if(${SPAN_SELF_TIME},release,${secondaryRelease})`, - ...(organization.features.includes('mobile-ttid-ttfd-contribution') - ? ['affects'] - : []), + ...(organization.features.includes('spans-first-ui') ? ['affects'] : []), ...['count()', 'time_spent_percentage()'], ].map(col => { return {key: col, name: columnNameMap[col] ?? col, width: COL_WIDTH_UNDEFINED}; From 7891f3b6e57e663e3ebd3d33442d1ec3303c7b29 Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Tue, 16 Apr 2024 11:42:23 -0400 Subject: [PATCH 6/7] aggregate span waterfall --- .../transactionSummary/aggregateSpanWaterfall/index.tsx | 2 +- static/app/views/performance/transactionSummary/header.tsx | 4 +--- .../api/endpoints/test_organization_spans_aggregation.py | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/static/app/views/performance/transactionSummary/aggregateSpanWaterfall/index.tsx b/static/app/views/performance/transactionSummary/aggregateSpanWaterfall/index.tsx index 2d592f7f1b1a60..a9aa1f39136fed 100644 --- a/static/app/views/performance/transactionSummary/aggregateSpanWaterfall/index.tsx +++ b/static/app/views/performance/transactionSummary/aggregateSpanWaterfall/index.tsx @@ -36,7 +36,7 @@ function AggregateSpanWaterfall(): React.ReactElement { const httpMethod = decodeScalar(location.query['http.method']); return ( diff --git a/static/app/views/performance/transactionSummary/header.tsx b/static/app/views/performance/transactionSummary/header.tsx index 475add545a9077..3d2ef741653269 100644 --- a/static/app/views/performance/transactionSummary/header.tsx +++ b/static/app/views/performance/transactionSummary/header.tsx @@ -77,9 +77,7 @@ function TransactionHeader({ organization.features.includes('profiling') && isProfilingSupportedOrProjectHasProfiles(project); - const hasAggregateWaterfall = organization.features.includes( - 'starfish-aggregate-span-waterfall' - ); + const hasAggregateWaterfall = organization.features.includes('spans-first-ui'); const getWebVitals = useCallback( (hasMeasurements: boolean) => { diff --git a/tests/snuba/api/endpoints/test_organization_spans_aggregation.py b/tests/snuba/api/endpoints/test_organization_spans_aggregation.py index 1c0c9256fec4b0..c40cc22644fd8c 100644 --- a/tests/snuba/api/endpoints/test_organization_spans_aggregation.py +++ b/tests/snuba/api/endpoints/test_organization_spans_aggregation.py @@ -166,7 +166,7 @@ class OrganizationSpansAggregationTest(APITestCase, SnubaTestCase): url_name = "sentry-api-0-organization-spans-aggregation" FEATURES = [ - "organizations:starfish-aggregate-span-waterfall", + "organizations:spans-first-ui", "organizations:performance-view", ] From 2f4b9adab0b0b4418db9982d61446a0dd0755b39 Mon Sep 17 00:00:00 2001 From: Shruthilaya Jaganathan Date: Tue, 16 Apr 2024 15:44:54 -0400 Subject: [PATCH 7/7] remove backend change --- .../snuba/api/endpoints/test_organization_spans_aggregation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/snuba/api/endpoints/test_organization_spans_aggregation.py b/tests/snuba/api/endpoints/test_organization_spans_aggregation.py index c40cc22644fd8c..1c0c9256fec4b0 100644 --- a/tests/snuba/api/endpoints/test_organization_spans_aggregation.py +++ b/tests/snuba/api/endpoints/test_organization_spans_aggregation.py @@ -166,7 +166,7 @@ class OrganizationSpansAggregationTest(APITestCase, SnubaTestCase): url_name = "sentry-api-0-organization-spans-aggregation" FEATURES = [ - "organizations:spans-first-ui", + "organizations:starfish-aggregate-span-waterfall", "organizations:performance-view", ]