Skip to content

Commit 583ebf0

Browse files
test: Sentry build type added (MetaMask#27276)
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> Add `build_variant` tag to Sentry performance events to distinguish between experimental and RC builds. <div><a href="https://cursor.com/agents/bc-337614a8-9173-4060-9737-eaa2b165e4f2"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-337614a8-9173-4060-9737-eaa2b165e4f2"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div> <!-- CURSOR_AGENT_PR_BODY_END --> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: javiergarciavera <javiergarciavera@users.noreply.github.com>
1 parent 5c07774 commit 583ebf0

4 files changed

Lines changed: 39 additions & 0 deletions

File tree

.github/workflows/performance-test-runner.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ on:
4040
type: string
4141
default: test
4242
description: 'Sentry DSN target: test or real'
43+
build_variant:
44+
required: false
45+
type: string
46+
default: rc
47+
description: 'Build variant for app artifacts (rc or exp)'
4348
secrets:
4449
BROWSERSTACK_USERNAME:
4550
required: true
@@ -163,6 +168,12 @@ jobs:
163168
SENTRY_REAL_DSN="${{ secrets.MM_SENTRY_DSN }}"
164169
SELECTED_SENTRY_DSN=""
165170
SENTRY_ENVIRONMENT="github-actions-performance-e2e"
171+
BUILD_VARIANT="${{ inputs.build_variant }}"
172+
173+
if [[ "$BUILD_VARIANT" != "rc" && "$BUILD_VARIANT" != "exp" ]]; then
174+
echo "❌ Invalid build_variant '$BUILD_VARIANT'. Expected 'rc' or 'exp'."
175+
exit 1
176+
fi
166177
167178
# Validate that we have a BrowserStack URL
168179
if [ -z "${{ inputs.browserstack_app_url }}" ]; then
@@ -210,6 +221,7 @@ jobs:
210221
echo "E2E_PERFORMANCE_SENTRY_DSN=$SELECTED_SENTRY_DSN"
211222
echo "E2E_PERFORMANCE_SENTRY_ENVIRONMENT=$SENTRY_ENVIRONMENT"
212223
echo "E2E_PERFORMANCE_SENTRY_RELEASE=${{ github.sha }}"
224+
echo "E2E_PERFORMANCE_BUILD_VARIANT=$BUILD_VARIANT"
213225
echo "DISABLE_VIDEO_DOWNLOAD=true"
214226
} >> "$GITHUB_ENV"
215227

.github/workflows/run-performance-e2e.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ jobs:
235235
platform: android
236236
build_type: onboarding
237237
sentry_target: ${{ inputs.sentry_target || 'test' }}
238+
build_variant: ${{ inputs.build_variant || 'rc' }}
238239
device_matrix: ${{ needs.read-device-matrix.outputs.android_matrix }}
239240
browserstack_app_url: ${{ needs.trigger-android-dual-versions.outputs.without-srp-browserstack-url || inputs.browserstack_app_url_android_onboarding }}
240241
app_version: ${{ needs.trigger-android-dual-versions.outputs.without-srp-version || 'Manual-Input' }}
@@ -257,6 +258,7 @@ jobs:
257258
platform: ios
258259
build_type: onboarding
259260
sentry_target: ${{ inputs.sentry_target || 'test' }}
261+
build_variant: ${{ inputs.build_variant || 'rc' }}
260262
device_matrix: ${{ needs.read-device-matrix.outputs.ios_matrix }}
261263
browserstack_app_url: ${{ needs.trigger-ios-dual-versions.outputs.without-srp-browserstack-url || inputs.browserstack_app_url_ios_onboarding }}
262264
app_version: ${{ needs.trigger-ios-dual-versions.outputs.without-srp-version || 'Manual-Input' }}
@@ -295,6 +297,7 @@ jobs:
295297
platform: android
296298
build_type: imported-wallet
297299
sentry_target: ${{ inputs.sentry_target || 'test' }}
300+
build_variant: ${{ inputs.build_variant || 'rc' }}
298301
device_matrix: ${{ needs.read-device-matrix.outputs.android_matrix }}
299302
browserstack_app_url: ${{ needs.trigger-android-dual-versions.outputs.with-srp-browserstack-url || inputs.browserstack_app_url_android_imported_wallet }}
300303
app_version: ${{ needs.trigger-android-dual-versions.outputs.with-srp-version || 'Manual-Input' }}
@@ -318,6 +321,7 @@ jobs:
318321
platform: ios
319322
build_type: imported-wallet
320323
sentry_target: ${{ inputs.sentry_target || 'test' }}
324+
build_variant: ${{ inputs.build_variant || 'rc' }}
321325
device_matrix: ${{ needs.read-device-matrix.outputs.ios_matrix }}
322326
browserstack_app_url: ${{ needs.trigger-ios-dual-versions.outputs.with-srp-browserstack-url || inputs.browserstack_app_url_ios_imported_wallet }}
323327
app_version: ${{ needs.trigger-ios-dual-versions.outputs.with-srp-version || 'Manual-Input' }}
@@ -377,6 +381,7 @@ jobs:
377381
platform: android
378382
build_type: mm-connect
379383
sentry_target: ${{ inputs.sentry_target || 'test' }}
384+
build_variant: ${{ inputs.build_variant || 'rc' }}
380385
device_matrix: ${{ needs.read-device-matrix.outputs.android_matrix }}
381386
browserstack_app_url: ${{ needs.trigger-android-dual-versions.outputs.with-srp-browserstack-url || inputs.browserstack_app_url_android_imported_wallet }}
382387
app_version: ${{ needs.trigger-android-dual-versions.outputs.with-srp-version || 'Manual-Input' }}

tests/reporters/providers/sentry/PerformanceSentryPublisher.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,14 @@ describe('PerformanceSentryPublisher', () => {
6565
const originalSentrySampleRate =
6666
process.env.E2E_PERFORMANCE_SENTRY_SAMPLE_RATE;
6767
const originalSentryEnabled = process.env.E2E_PERFORMANCE_SENTRY_ENABLED;
68+
const originalBuildVariant = process.env.E2E_PERFORMANCE_BUILD_VARIANT;
6869

6970
beforeEach(() => {
7071
jest.clearAllMocks();
7172
delete process.env.E2E_PERFORMANCE_SENTRY_DSN;
7273
delete process.env.E2E_PERFORMANCE_SENTRY_SAMPLE_RATE;
7374
delete process.env.E2E_PERFORMANCE_SENTRY_ENABLED;
75+
delete process.env.E2E_PERFORMANCE_BUILD_VARIANT;
7476
fetchMock = jest.spyOn(global, 'fetch');
7577
});
7678

@@ -93,6 +95,12 @@ describe('PerformanceSentryPublisher', () => {
9395
process.env.E2E_PERFORMANCE_SENTRY_ENABLED = originalSentryEnabled;
9496
}
9597

98+
if (originalBuildVariant === undefined) {
99+
delete process.env.E2E_PERFORMANCE_BUILD_VARIANT;
100+
} else {
101+
process.env.E2E_PERFORMANCE_BUILD_VARIANT = originalBuildVariant;
102+
}
103+
96104
fetchMock.mockRestore();
97105
});
98106

@@ -115,6 +123,7 @@ describe('PerformanceSentryPublisher', () => {
115123
it('sends performance timers as sentry measurements', async () => {
116124
process.env.E2E_PERFORMANCE_SENTRY_DSN =
117125
'https://publicKey@o123.ingest.sentry.io/4567';
126+
process.env.E2E_PERFORMANCE_BUILD_VARIANT = 'exp';
118127
fetchMock.mockResolvedValue({
119128
ok: true,
120129
status: 200,
@@ -158,6 +167,7 @@ describe('PerformanceSentryPublisher', () => {
158167
expect(payload.measurements.step_1_load_2.value).toBe(700);
159168
expect(payload.measurements.scenario_total_time_ms.value).toBe(1300);
160169
expect(payload.tags.project_name).toBe('browserstack-android');
170+
expect(payload.tags.build_variant).toBe('exp');
161171
expect(payload.extra.timer_steps).toHaveLength(2);
162172
});
163173

tests/reporters/providers/sentry/PerformanceSentryPublisher.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const ENV_SENTRY_ENABLED = 'E2E_PERFORMANCE_SENTRY_ENABLED';
1212
const ENV_SENTRY_SAMPLE_RATE = 'E2E_PERFORMANCE_SENTRY_SAMPLE_RATE';
1313
const ENV_SENTRY_ENVIRONMENT = 'E2E_PERFORMANCE_SENTRY_ENVIRONMENT';
1414
const ENV_SENTRY_RELEASE = 'E2E_PERFORMANCE_SENTRY_RELEASE';
15+
const ENV_SENTRY_BUILD_VARIANT = 'E2E_PERFORMANCE_BUILD_VARIANT';
1516
const MAX_MEASUREMENT_KEY_LENGTH = 64;
1617
const RESERVED_MEASUREMENT_KEYS = [
1718
'scenario_total_time_ms',
@@ -75,6 +76,14 @@ function normalizeSpanStatus(status?: string): string {
7576
}
7677
}
7778

79+
function normalizeBuildVariant(variant?: string): 'rc' | 'exp' | 'unknown' {
80+
if (variant === 'rc' || variant === 'exp') {
81+
return variant;
82+
}
83+
84+
return 'unknown';
85+
}
86+
7887
function sanitizeMeasurementKey(name: string): string {
7988
const baseKey = name
8089
.toLowerCase()
@@ -308,6 +317,9 @@ export async function publishPerformanceScenarioToSentry(
308317
test_status: options.status || 'unknown',
309318
retry: String(options.retry ?? 0),
310319
worker_index: String(options.workerIndex ?? 0),
320+
build_variant: normalizeBuildVariant(
321+
getEnvValue(ENV_SENTRY_BUILD_VARIANT),
322+
),
311323
},
312324
measurements,
313325
spans,

0 commit comments

Comments
 (0)