diff --git a/static/app/components/onboarding/productSelection.tsx b/static/app/components/onboarding/productSelection.tsx index 32cbf366de38b3..0c8abf9bab2095 100644 --- a/static/app/components/onboarding/productSelection.tsx +++ b/static/app/components/onboarding/productSelection.tsx @@ -97,14 +97,43 @@ export const platformProductAvailability = { ProductSolution.PERFORMANCE_MONITORING, ProductSolution.PROFILING, ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-aspnet': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-aspnetcore': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-awslambda': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-gcpfunctions': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-maui': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-winforms': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], + 'dotnet-wpf': [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, ], - 'dotnet-aspnet': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-aspnetcore': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-awslambda': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-gcpfunctions': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-maui': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-winforms': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], - 'dotnet-wpf': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], 'dotnet-xamarin': [ProductSolution.PERFORMANCE_MONITORING], dart: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], kotlin: [ProductSolution.PERFORMANCE_MONITORING], diff --git a/static/app/data/platformCategories.tsx b/static/app/data/platformCategories.tsx index 9e9ec3d51718cb..113ae30aa0b8d0 100644 --- a/static/app/data/platformCategories.tsx +++ b/static/app/data/platformCategories.tsx @@ -407,6 +407,14 @@ export const withMetricsOnboarding: Set = new Set([ 'apple', 'apple-ios', 'apple-macos', + 'dotnet', + 'dotnet-aspnet', + 'dotnet-aspnetcore', + 'dotnet-awslambda', + 'dotnet-gcpfunctions', + 'dotnet-maui', + 'dotnet-winforms', + 'dotnet-wpf', 'react-native', 'go', 'go-echo', @@ -480,13 +488,14 @@ export const withMetricsOnboarding: Set = new Set([ ]); // List of platforms that do not have metrics support. We make use of this list in the product to not provide any Metrics -export const withoutMetricsSupport: Set = new Set([]); +export const withoutMetricsSupport: Set = new Set(['dotnet-xamarin']); export const limitedMetricsSupportPrefixes: Set = new Set([ 'android', 'apple', 'bun', 'dart', + 'dotnet', 'electron', 'go', 'java', diff --git a/static/app/gettingStartedDocs/dotnet-aspnet/index.tsx b/static/app/gettingStartedDocs/dotnet-aspnet/index.tsx index 40e9cd5b4d6615..12f3740bd10d4e 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnet/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnet/index.tsx @@ -1,5 +1,6 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import { feedbackOnboardingJsLoader, replayOnboardingJsLoader, @@ -14,6 +15,7 @@ const docs: Docs = { crashReportOnboarding: crashReport, feedbackOnboardingJsLoader, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.spec.tsx index 96843a7744a74c..c9974ea12cdb85 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.spec.tsx @@ -14,14 +14,17 @@ describe('aspnet onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Documentation'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.tsx index d3b73612aa41bc..a4f905c597e168 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnet/onboarding.tsx @@ -6,6 +6,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -159,16 +160,10 @@ export const onboarding: OnboardingConfig = { } ), }, + logsVerify(params), + metricsVerify(params), ], }, - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx b/static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx index 40e9cd5b4d6615..12f3740bd10d4e 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx @@ -1,5 +1,6 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import { feedbackOnboardingJsLoader, replayOnboardingJsLoader, @@ -14,6 +15,7 @@ const docs: Docs = { crashReportOnboarding: crashReport, feedbackOnboardingJsLoader, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.spec.tsx index e4b5ce1edc12cf..c949c8553076fe 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.spec.tsx @@ -14,7 +14,11 @@ describe('aspnetcore onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings @@ -22,7 +26,6 @@ describe('aspnetcore onboarding docs', () => { expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.tsx index 669ab075fd677a..b3c515e37a01d9 100644 --- a/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.tsx @@ -7,6 +7,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -154,6 +155,8 @@ export const onboarding: OnboardingConfig = { } ), }, + logsVerify(params), + metricsVerify(params), ], }, ...(params.isPerformanceSelected @@ -185,14 +188,6 @@ export const onboarding: OnboardingConfig = { }, ] satisfies OnboardingStep[]) : []), - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet-awslambda/index.tsx b/static/app/gettingStartedDocs/dotnet-awslambda/index.tsx index 8ebb0527b3b6ac..1c8bba931ae851 100644 --- a/static/app/gettingStartedDocs/dotnet-awslambda/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-awslambda/index.tsx @@ -1,6 +1,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {crashReport} from './crashReport'; import {onboarding} from './onboarding'; @@ -10,6 +11,7 @@ const docs: Docs = { feedbackOnboardingCrashApi: feedback, crashReportOnboarding: crashReport, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.spec.tsx index aef7247759e1b1..48ee869bb08f7f 100644 --- a/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.spec.tsx @@ -14,14 +14,13 @@ describe('awslambda onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.LOGS], + selectedProducts: [ProductSolution.LOGS, ProductSolution.METRICS], }); // Renders main headings expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); // Renders SDK version from registry expect( diff --git a/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.tsx index 7e3c5af5a084fc..36ca19d9ac9c08 100644 --- a/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-awslambda/onboarding.tsx @@ -6,6 +6,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -156,6 +157,8 @@ export const onboarding: OnboardingConfig = { language: 'shell', code: 'curl -X GET -I https://url.of.server.aws/api/bad', }, + logsVerify(params), + metricsVerify(params), { type: 'text', text: tct( @@ -169,13 +172,5 @@ export const onboarding: OnboardingConfig = { }, ], }, - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), ], }; diff --git a/static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx b/static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx index 8ebb0527b3b6ac..1c8bba931ae851 100644 --- a/static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx @@ -1,6 +1,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {crashReport} from './crashReport'; import {onboarding} from './onboarding'; @@ -10,6 +11,7 @@ const docs: Docs = { feedbackOnboardingCrashApi: feedback, crashReportOnboarding: crashReport, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.spec.tsx index ce508d0a26e19f..6a36d1f252353b 100644 --- a/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.spec.tsx @@ -14,14 +14,13 @@ describe('gcpfunctions onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.LOGS], + selectedProducts: [ProductSolution.LOGS, ProductSolution.METRICS], }); // Renders main headings expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.tsx index a6a4df736d1715..df7eafe29e0845 100644 --- a/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-gcpfunctions/onboarding.tsx @@ -6,6 +6,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -167,16 +168,10 @@ export const onboarding: OnboardingConfig = { language: 'csharp', code: getVerifySnippet(), }, + logsVerify(params), + metricsVerify(params), ], }, - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet-maui/index.tsx b/static/app/gettingStartedDocs/dotnet-maui/index.tsx index 8ebb0527b3b6ac..1c8bba931ae851 100644 --- a/static/app/gettingStartedDocs/dotnet-maui/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-maui/index.tsx @@ -1,6 +1,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {crashReport} from './crashReport'; import {onboarding} from './onboarding'; @@ -10,6 +11,7 @@ const docs: Docs = { feedbackOnboardingCrashApi: feedback, crashReportOnboarding: crashReport, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-maui/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-maui/onboarding.spec.tsx index 8168b4c4ac2cc9..553f3ece15b7cf 100644 --- a/static/app/gettingStartedDocs/dotnet-maui/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-maui/onboarding.spec.tsx @@ -14,7 +14,11 @@ describe('maui onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings @@ -22,7 +26,6 @@ describe('maui onboarding docs', () => { expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Sample Application'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-maui/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-maui/onboarding.tsx index f56a35bdfed90a..76bf51aff57e3b 100644 --- a/static/app/gettingStartedDocs/dotnet-maui/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-maui/onboarding.tsx @@ -7,6 +7,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -150,6 +151,8 @@ export const onboarding: OnboardingConfig = { language: 'csharp', code: 'SentrySdk.CaptureMessage("Hello Sentry");', }, + logsVerify(params), + metricsVerify(params), ], }, ...(params.isPerformanceSelected @@ -212,14 +215,6 @@ export const onboarding: OnboardingConfig = { }, ] satisfies OnboardingStep[]) : []), - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Sample Application'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet-winforms/index.tsx b/static/app/gettingStartedDocs/dotnet-winforms/index.tsx index 8ebb0527b3b6ac..1c8bba931ae851 100644 --- a/static/app/gettingStartedDocs/dotnet-winforms/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-winforms/index.tsx @@ -1,6 +1,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {crashReport} from './crashReport'; import {onboarding} from './onboarding'; @@ -10,6 +11,7 @@ const docs: Docs = { feedbackOnboardingCrashApi: feedback, crashReportOnboarding: crashReport, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-winforms/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-winforms/onboarding.spec.tsx index ecf649896c319c..2249034a875c45 100644 --- a/static/app/gettingStartedDocs/dotnet-winforms/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-winforms/onboarding.spec.tsx @@ -14,7 +14,11 @@ describe('winforms onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings @@ -23,7 +27,6 @@ describe('winforms onboarding docs', () => { expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Documentation'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-winforms/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-winforms/onboarding.tsx index 9dfac1b812bfe3..8d2c79fa862b24 100644 --- a/static/app/gettingStartedDocs/dotnet-winforms/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-winforms/onboarding.tsx @@ -7,6 +7,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -136,6 +137,8 @@ export const onboarding: OnboardingConfig = { language: 'csharp', code: 'SentrySdk.CaptureMessage("Hello Sentry");', }, + logsVerify(params), + metricsVerify(params), ], }, ...(params.isPerformanceSelected @@ -185,14 +188,6 @@ export const onboarding: OnboardingConfig = { }, ] satisfies OnboardingStep[]) : []), - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet-wpf/index.tsx b/static/app/gettingStartedDocs/dotnet-wpf/index.tsx index 8ebb0527b3b6ac..1c8bba931ae851 100644 --- a/static/app/gettingStartedDocs/dotnet-wpf/index.tsx +++ b/static/app/gettingStartedDocs/dotnet-wpf/index.tsx @@ -1,6 +1,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback'; import {logs} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {crashReport} from './crashReport'; import {onboarding} from './onboarding'; @@ -10,6 +11,7 @@ const docs: Docs = { feedbackOnboardingCrashApi: feedback, crashReportOnboarding: crashReport, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet-wpf/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet-wpf/onboarding.spec.tsx index fc0da5db51c823..90424f48428990 100644 --- a/static/app/gettingStartedDocs/dotnet-wpf/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet-wpf/onboarding.spec.tsx @@ -14,7 +14,11 @@ describe('wpf onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings @@ -23,7 +27,6 @@ describe('wpf onboarding docs', () => { expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Documentation'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet-wpf/onboarding.tsx b/static/app/gettingStartedDocs/dotnet-wpf/onboarding.tsx index 743ea4b46a29f4..a9ee6d11776aad 100644 --- a/static/app/gettingStartedDocs/dotnet-wpf/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet-wpf/onboarding.tsx @@ -7,6 +7,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -136,6 +137,8 @@ export const onboarding: OnboardingConfig = { language: 'csharp', code: 'SentrySdk.CaptureMessage("Hello Sentry");', }, + logsVerify(params), + metricsVerify(params), ], }, ...(params.isPerformanceSelected @@ -185,14 +188,6 @@ export const onboarding: OnboardingConfig = { }, ] satisfies OnboardingStep[]) : []), - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet/index.tsx b/static/app/gettingStartedDocs/dotnet/index.tsx index dcf7712ca3498b..96d485dc996f09 100644 --- a/static/app/gettingStartedDocs/dotnet/index.tsx +++ b/static/app/gettingStartedDocs/dotnet/index.tsx @@ -3,6 +3,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {crashReport} from './crashReport'; import {feedback} from './feedback'; import {logs} from './logs'; +import {metrics} from './metrics'; import {onboarding} from './onboarding'; import {profiling} from './profiling'; @@ -12,6 +13,7 @@ const docs: Docs = { crashReportOnboarding: crashReport, profilingOnboarding: profiling, logsOnboarding: logs, + metricsOnboarding: metrics, }; export default docs; diff --git a/static/app/gettingStartedDocs/dotnet/metrics.spec.tsx b/static/app/gettingStartedDocs/dotnet/metrics.spec.tsx new file mode 100644 index 00000000000000..fe2025061544eb --- /dev/null +++ b/static/app/gettingStartedDocs/dotnet/metrics.spec.tsx @@ -0,0 +1,33 @@ +import {renderWithOnboardingLayout} from 'sentry-test/onboarding/renderWithOnboardingLayout'; +import {screen} from 'sentry-test/reactTestingLibrary'; +import {textWithMarkupMatcher} from 'sentry-test/utils'; + +import {ProductSolution} from 'sentry/components/onboarding/gettingStartedDoc/types'; + +import docs from '.'; + +describe('metrics', () => { + it('dotnet metrics onboarding docs', () => { + renderWithOnboardingLayout(docs, { + selectedProducts: [ProductSolution.METRICS], + }); + + expect( + screen.getByText( + textWithMarkupMatcher(/SentrySdk\.Experimental\.Metrics\.EmitCounter/) + ) + ).toBeInTheDocument(); + }); + + it('does not render metrics configuration when metrics is not enabled', () => { + renderWithOnboardingLayout(docs, { + selectedProducts: [], + }); + + expect( + screen.queryByText( + textWithMarkupMatcher(/SentrySdk\.Experimental\.Metrics\.EmitCounter/) + ) + ).not.toBeInTheDocument(); + }); +}); diff --git a/static/app/gettingStartedDocs/dotnet/metrics.tsx b/static/app/gettingStartedDocs/dotnet/metrics.tsx new file mode 100644 index 00000000000000..14ec6565fbdb8e --- /dev/null +++ b/static/app/gettingStartedDocs/dotnet/metrics.tsx @@ -0,0 +1,124 @@ +import {ExternalLink} from '@sentry/scraps/link'; + +import { + StepType, + type ContentBlock, + type DocsParams, + type OnboardingConfig, +} from 'sentry/components/onboarding/gettingStartedDoc/types'; +import { + getInstallSnippetCoreCli, + getInstallSnippetPackageManager, +} from 'sentry/gettingStartedDocs/dotnet/utils'; +import {t, tct} from 'sentry/locale'; + +export const metricsVerify = (params: DocsParams): ContentBlock => ({ + type: 'conditional', + condition: params.isMetricsSelected, + content: [ + { + type: 'text', + text: t( + 'Send test metrics from your app to verify metrics are arriving in Sentry.' + ), + }, + { + type: 'code', + language: 'csharp', + code: `using Sentry; + +SentrySdk.Experimental.Metrics.EmitCounter("button_click", 5, + [new KeyValuePair("browser", "Firefox"), new KeyValuePair("app_version", "1.0.0")]); +SentrySdk.Experimental.Metrics.EmitDistribution("page_load", 15.0, SentryUnits.Duration.Millisecond, + [new KeyValuePair("page", "/home")]); +SentrySdk.Experimental.Metrics.EmitGauge("page_load", 15.0, SentryUnits.Duration.Millisecond, + [new KeyValuePair("page", "/home")]); +`, + }, + { + type: 'text', + text: tct('For more detailed information, see the [link:metrics documentation].', { + link: , + }), + }, + ], +}); + +export const metrics: OnboardingConfig = { + install: params => [ + { + type: StepType.INSTALL, + content: [ + { + type: 'text', + text: tct( + 'Install our .NET SDK with a minimum version that supports metrics ([code:6.1.0] or higher).', + { + code: , + } + ), + }, + { + type: 'code', + tabs: [ + { + label: 'Package Manager', + language: 'shell', + code: getInstallSnippetPackageManager(params), + }, + { + label: '.NET Core CLI', + language: 'shell', + code: getInstallSnippetCoreCli(params), + }, + ], + }, + ], + }, + ], + configure: () => [], + verify: (params: DocsParams) => [ + { + type: StepType.VERIFY, + content: [ + { + type: 'text', + text: tct( + 'Metrics are automatically enabled in your [code:SentrySdk.Init] configuration. You can emit metrics using the [code:SentrySdk.Experimental.Metrics] API.', + { + code: , + } + ), + }, + { + type: 'code', + language: 'csharp', + code: `using Sentry; + +SentrySdk.Init(options => +{ + options.Dsn = "${params.dsn.public}"; +}); + +SentrySdk.Experimental.Metrics.EmitCounter("button_click", 5, + [new KeyValuePair("browser", "Firefox"), new KeyValuePair("app_version", "1.0.0")]); +SentrySdk.Experimental.Metrics.EmitDistribution("page_load", 15.0, SentryUnits.Duration.Millisecond, + [new KeyValuePair("page", "/home")]); +SentrySdk.Experimental.Metrics.EmitGauge("page_load", 15.0, SentryUnits.Duration.Millisecond, + [new KeyValuePair("page", "/home")]);`, + }, + { + type: 'text', + text: tct( + 'For more detailed information, see the [link:metrics documentation].', + { + link: ( + + ), + } + ), + }, + ], + }, + ], +}; diff --git a/static/app/gettingStartedDocs/dotnet/onboarding.spec.tsx b/static/app/gettingStartedDocs/dotnet/onboarding.spec.tsx index 50151073b5fb3b..26a7b39e2df5b1 100644 --- a/static/app/gettingStartedDocs/dotnet/onboarding.spec.tsx +++ b/static/app/gettingStartedDocs/dotnet/onboarding.spec.tsx @@ -14,7 +14,11 @@ describe('dotnet onboarding docs', () => { version: '1.99.9', }, }, - selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS], + selectedProducts: [ + ProductSolution.PERFORMANCE_MONITORING, + ProductSolution.LOGS, + ProductSolution.METRICS, + ], }); // Renders main headings @@ -22,7 +26,6 @@ describe('dotnet onboarding docs', () => { expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument(); - expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument(); expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument(); // Renders SDK version from registry diff --git a/static/app/gettingStartedDocs/dotnet/onboarding.tsx b/static/app/gettingStartedDocs/dotnet/onboarding.tsx index bc76da6fdf974a..326a9e8092a155 100644 --- a/static/app/gettingStartedDocs/dotnet/onboarding.tsx +++ b/static/app/gettingStartedDocs/dotnet/onboarding.tsx @@ -7,6 +7,7 @@ import type { } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs'; +import {metricsVerify} from 'sentry/gettingStartedDocs/dotnet/metrics'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; @@ -230,6 +231,8 @@ export const onboarding: OnboardingConfig = { language: 'csharp', code: 'SentrySdk.CaptureMessage("Something went wrong");', }, + logsVerify(params), + metricsVerify(params), ], }, ...(params.isPerformanceSelected @@ -263,14 +266,6 @@ export const onboarding: OnboardingConfig = { }, ] satisfies OnboardingStep[]) : []), - ...(params.isLogsSelected - ? [ - { - title: t('Verify Logs'), - content: [logsVerify(params)], - }, - ] - : []), { title: t('Samples'), content: [ diff --git a/static/app/gettingStartedDocs/dotnet/utils.tsx b/static/app/gettingStartedDocs/dotnet/utils.tsx index 1497d79f2265c6..a06806b8382782 100644 --- a/static/app/gettingStartedDocs/dotnet/utils.tsx +++ b/static/app/gettingStartedDocs/dotnet/utils.tsx @@ -1,8 +1,10 @@ import type {DocsParams} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; +// Sentry SDK for .NET 6.1.0 adds initial experimental support for Metrics export const getInstallSnippetPackageManager = (params: DocsParams) => ` -Install-Package Sentry -Version ${getPackageVersion(params, 'sentry.dotnet', '6.0.0')}`; +Install-Package Sentry -Version ${getPackageVersion(params, 'sentry.dotnet', '6.1.0')}`; +// Sentry SDK for .NET 6.1.0 adds initial experimental support for Metrics export const getInstallSnippetCoreCli = (params: DocsParams) => ` -dotnet add package Sentry -v ${getPackageVersion(params, 'sentry.dotnet', '6.0.0')}`; +dotnet add package Sentry -v ${getPackageVersion(params, 'sentry.dotnet', '6.1.0')}`;