Skip to content

test: add Sentry coverage-equivalence harness (envelope parse/normalize/diff)#43820

Open
MajorLift wants to merge 4 commits into
mainfrom
jongsun/sentry-coverage-harness
Open

test: add Sentry coverage-equivalence harness (envelope parse/normalize/diff)#43820
MajorLift wants to merge 4 commits into
mainfrom
jongsun/sentry-coverage-harness

Conversation

@MajorLift

@MajorLift MajorLift commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Description

Layer-2 verification tooling for the Sentry v8→v10 migration (#42867), implementing the harness spec'd in #43819.

Captures the full set of envelopes the extension sends to a mocked Sentry DSN during a fixed flow, normalizes away volatile ids/timestamps, and diffs a v10 run against a v8 baseline — surfacing any added/removed envelope item, dropped correlation tag (e.g. otelTraceId), or volume change that a green suite would miss. The point is to verify behavioral equivalence of telemetry, not just that tests pass.

What's here:

  • test/e2e/helpers/sentry-coverage.ts — pure parse/normalize/diff utility: a Sentry newline-delimited envelope parser, volatile-key stripping, stable per-item signatures, and a structural diff with per-type counts. No runtime/Sentry imports.
  • test/e2e/helpers/sentry-coverage.test.ts — 10 unit tests over realistic error/transaction/session envelope fixtures: parsing, normalization, and diff-detection of removed items, dropped tags, and volume increases.
  • test/e2e/tests/metrics/sentry-coverage.spec.ts — the e2e capture spec. A manual cross-build harness (not an always-on check): it skips by default and runs only with UPDATE_SENTRY_COVERAGE_BASELINE=true (write the baseline on v8) or when a baseline is present (compare on v10).

How to use (the v8-vs-v10 protocol): on main (v8), run the spec with UPDATE_SENTRY_COVERAGE_BASELINE=true to write state-snapshots/sentry-coverage-baseline.json; then on the v10 branch (#42867), run it without the env var to diff against the baseline and fail on any structural delta, each triaged benign (timing) vs regression. The baseline JSON is intentionally not committed — it must be generated from a v8 build.

Related issues

Closes #43819

Related:

Manual testing steps

  1. yarn jest test/e2e/helpers/sentry-coverage.test.ts → 10 passing (the pure parse/normalize/diff utility).
  2. The capture spec requires a built extension; run per the protocol above on v8 then v10. In normal CI it skips (no committed baseline), so it doesn't gate unrelated runs.

Screenshots/Recordings

N/A — E2E verification tooling only; no user-facing change.

Before

No way to verify the v8→v10 migration preserves equivalent telemetry beyond the existing per-field snapshot assertions.

After

A reusable harness diffs the full v8 vs v10 envelope set (items, tags, volume), with the pure core unit-tested.

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Changes are confined to E2E test helpers and a skipped-by-default spec; no production telemetry or runtime behavior is modified.

Overview
Adds test-only tooling to compare Sentry telemetry across SDK builds (e.g. v8 vs v10) by diffing mocked envelope POSTs from a fixed E2E flow, not by asserting individual fields in existing tests.

New sentry-coverage helpers parse newline-delimited envelope bodies, strip volatile ids/timestamps, build stable per-item signatures, and diffCoverage reports added/removed items, tag-key changes (e.g. otelTraceId), and per-type volume deltas. Unit tests cover parsing, normalization, and diff scenarios.

The sentry-coverage.spec.ts harness unlocks + triggers a developer-options test error, captures all Sentry POSTs via a high-priority mockttp handler, waits for session / event / transaction, then either writes a baseline (UPDATE_SENTRY_COVERAGE_BASELINE=true) or asserts equivalence against a local baseline file. The spec skips in CI when no baseline exists; the baseline JSON is not committed.

Reviewed by Cursor Bugbot for commit 1349304. Bugbot is set up for automated code reviews on this repo. Configure here.

Layer-2 verification for the Sentry v8→v10 migration (#42867): capture the full
set of envelopes sent to a mocked DSN for a fixed flow, normalize away volatile
ids/timestamps, and diff a v10 run against a v8 baseline to surface any
added/removed item, dropped correlation tag, or volume change. Pure
parse/normalize/diff utility is unit-tested; the capture spec generates the
baseline on v8 and compares on v10. Tracked by #43819.
@github-actions

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [9cd096f] [reused from c4b43e9]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 8 warn · 🔴 3 fail)

Baseline (latest main): c4b43e9 | Date: 6/23/2026 | Pipeline: 28064419612 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 openAccountMenuToAccountListLoaded(p75) [CI log]🔴 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 3 failures)

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/inp: +19%
  • bridgeUserActions/bridge_load_page: -10%
  • bridgeUserActions/longTaskMaxDuration: -10%
  • bridgeUserActions/tbt: -26%
  • loadNewAccount/inp: -25%
  • loadNewAccount/fcp: -52%
  • loadNewAccount/lcp: +1096%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/lcp: +1102%
  • bridgeUserActions/bridge_load_page: +196%
  • bridgeUserActions/bridge_load_asset_picker: +19%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +15%
  • bridgeUserActions/inp: -12%
  • bridgeUserActions/lcp: +1171%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/domInteractive: +12%
  • startupPowerUserHome/firstReactRender: +10%
  • startupPowerUserHome/initialActions: +23%
  • startupPowerUserHome/setupStore: +17%
  • startupPowerUserHome/longTaskTotalDuration: +10%
  • startupPowerUserHome/tbt: +10%
  • startupPowerUserHome/inp: +10%
  • startupPowerUserHome/uiStartup: +16%
  • startupPowerUserHome/load: +13%
  • startupPowerUserHome/domContentLoaded: +13%
  • startupPowerUserHome/domInteractive: +20%
  • startupPowerUserHome/backgroundConnect: -16%
  • startupPowerUserHome/firstReactRender: +15%
  • startupPowerUserHome/loadScripts: +16%
  • startupPowerUserHome/setupStore: +15%
  • startupPowerUserHome/fcp: +11%
  • startupPowerUserHome/lcp: +15%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 560ms
  • 🟡 startupPowerUserHome/LCP: p75 3.8s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🟡 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🔴 total
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]
🔴 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: -12%
  • onboardingImportWallet/doneButtonToHomeScreen: -11%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +12%
  • onboardingImportWallet/longTaskTotalDuration: +22%
  • onboardingImportWallet/longTaskMaxDuration: +18%
  • onboardingImportWallet/tbt: +21%
  • onboardingNewWallet/doneButtonToAssetList: -11%
  • onboardingNewWallet/longTaskCount: -17%
  • solanaAssetDetails/assetClickToPriceChart: +28%
  • solanaAssetDetails/total: +28%
  • solanaAssetDetails/inp: +19%
  • solanaAssetDetails/cls: +12%
  • importSrpHome/cls: -35%
  • sendTransactions/selectTokenToSendFormLoaded: +13%
  • sendTransactions/reviewTransactionToConfirmationPage: -44%
  • sendTransactions/longTaskCount: -44%
  • sendTransactions/longTaskTotalDuration: -19%
  • sendTransactions/tbt: -76%
  • sendTransactions/total: -44%
  • sendTransactions/inp: +11%
  • sendTransactions/lcp: +20%
  • sendTransactions/cls: -67%
  • swap/tbt: +19%
  • swap/cls: -14%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 importSrpHome/INP: p75 264ms
  • 🟡 sendTransactions/INP: p75 216ms
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 2.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +11%
Bundle size diffs
  • background: 0 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 0 Bytes (0%)

const removed = [...baseTags].filter((tag) => !currTags.has(tag)).sort();
if (added.length > 0 || removed.length > 0) {
tagChanges.push({ signature, added, removed });
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tag diff ignores duplicate signatures

Medium Severity

In diffCoverage, tag coverage for a signature is taken only from the first grouped NormalizedItem ([0]), not from every item sharing that signature. When per-type counts match, equivalent can stay true even if another duplicate item (e.g. a repeated pageload transaction) lost a correlation tag such as otelTraceId.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9cd096f. Configure here.

`lint:tsc` flagged the `getSeenRequests()` map param as implicit-any (TS7006) —
annotate it `CompletedRequest`. And the spec is a manual cross-build harness with
no committed baseline, so it threw (failing normal CI); skip it by default unless
a baseline exists or `UPDATE_SENTRY_COVERAGE_BASELINE=true`.
@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [f7b9970] [reused from c4b43e9]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 8 warn · 🔴 3 fail)

Baseline (latest main): c4b43e9 | Date: 6/23/2026 | Pipeline: 28065307524 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 openAccountMenuToAccountListLoaded(p75) [CI log]🔴 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 3 failures)

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/inp: +19%
  • bridgeUserActions/bridge_load_page: -10%
  • bridgeUserActions/longTaskMaxDuration: -10%
  • bridgeUserActions/tbt: -26%
  • loadNewAccount/inp: -25%
  • loadNewAccount/fcp: -52%
  • loadNewAccount/lcp: +1096%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/lcp: +1102%
  • bridgeUserActions/bridge_load_page: +196%
  • bridgeUserActions/bridge_load_asset_picker: +19%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +15%
  • bridgeUserActions/inp: -12%
  • bridgeUserActions/lcp: +1171%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/domInteractive: +12%
  • startupPowerUserHome/firstReactRender: +10%
  • startupPowerUserHome/initialActions: +23%
  • startupPowerUserHome/setupStore: +17%
  • startupPowerUserHome/longTaskTotalDuration: +10%
  • startupPowerUserHome/tbt: +10%
  • startupPowerUserHome/inp: +10%
  • startupPowerUserHome/uiStartup: +16%
  • startupPowerUserHome/load: +13%
  • startupPowerUserHome/domContentLoaded: +13%
  • startupPowerUserHome/domInteractive: +20%
  • startupPowerUserHome/backgroundConnect: -16%
  • startupPowerUserHome/firstReactRender: +15%
  • startupPowerUserHome/loadScripts: +16%
  • startupPowerUserHome/setupStore: +15%
  • startupPowerUserHome/fcp: +11%
  • startupPowerUserHome/lcp: +15%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 560ms
  • 🟡 startupPowerUserHome/LCP: p75 3.8s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🟡 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🔴 total
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]
🔴 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: -12%
  • onboardingImportWallet/doneButtonToHomeScreen: -11%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +12%
  • onboardingImportWallet/longTaskTotalDuration: +22%
  • onboardingImportWallet/longTaskMaxDuration: +18%
  • onboardingImportWallet/tbt: +21%
  • onboardingNewWallet/doneButtonToAssetList: -11%
  • onboardingNewWallet/longTaskCount: -17%
  • solanaAssetDetails/assetClickToPriceChart: +28%
  • solanaAssetDetails/total: +28%
  • solanaAssetDetails/inp: +19%
  • solanaAssetDetails/cls: +12%
  • importSrpHome/cls: -35%
  • sendTransactions/selectTokenToSendFormLoaded: +13%
  • sendTransactions/reviewTransactionToConfirmationPage: -44%
  • sendTransactions/longTaskCount: -44%
  • sendTransactions/longTaskTotalDuration: -19%
  • sendTransactions/tbt: -76%
  • sendTransactions/total: -44%
  • sendTransactions/inp: +11%
  • sendTransactions/lcp: +20%
  • sendTransactions/cls: -67%
  • swap/tbt: +19%
  • swap/cls: -14%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 importSrpHome/INP: p75 264ms
  • 🟡 sendTransactions/INP: p75 216ms
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 2.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +11%
Bundle size diffs
  • background: 0 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 0 Bytes (0%)

@MajorLift MajorLift changed the title Add Sentry coverage-equivalence harness (envelope parse/normalize/diff) test: add Sentry coverage-equivalence harness (envelope parse/normalize/diff) Jun 24, 2026
@MajorLift MajorLift added the DO-NOT-MERGE Pull requests that should not be merged label Jun 24, 2026
@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [67f2d57] [reused from a0fd448]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 15 pass · 🟡 7 warn · 🔴 3 fail)

Baseline (latest main): a0fd448 | Date: 6/26/2026 | Pipeline: 28264233304 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]🔴 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 3 failures)

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
🔴 load_new_account
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -24%
  • loadNewAccount/total: -24%
  • loadNewAccount/inp: +27%
  • bridgeUserActions/bridge_load_page: +34%
  • bridgeUserActions/longTaskCount: -29%
  • bridgeUserActions/tbt: +19%
  • bridgeUserActions/inp: +12%
  • loadNewAccount/load_new_account: +420%
  • loadNewAccount/total: +420%
  • loadNewAccount/inp: -33%
  • loadNewAccount/lcp: +1111%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -18%
  • confirmTx/fcp: -52%
  • confirmTx/lcp: +1109%
  • bridgeUserActions/bridge_load_page: +112%
  • bridgeUserActions/bridge_load_asset_picker: +53%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +12%
  • bridgeUserActions/fcp: -51%
  • bridgeUserActions/lcp: +1138%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/numNetworkReqs: -15%
  • startupStandardHome/lcp: -38%
  • startupPowerUserHome/longTaskCount: +10%
  • startupStandardHome/domInteractive: -22%
  • startupStandardHome/fcp: -17%
  • startupPowerUserHome/domInteractive: +22%
  • startupPowerUserHome/fcp: +27%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 568ms
  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 3.8s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🔴 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🔴 total
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]
🔴 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -85%
  • onboardingImportWallet/longTaskCount: -47%
  • onboardingImportWallet/longTaskTotalDuration: -83%
  • onboardingImportWallet/longTaskMaxDuration: -86%
  • onboardingImportWallet/tbt: -93%
  • onboardingImportWallet/total: -18%
  • onboardingNewWallet/longTaskTotalDuration: -10%
  • onboardingNewWallet/tbt: -16%
  • solanaAssetDetails/assetClickToPriceChart: +15%
  • solanaAssetDetails/longTaskCount: +400%
  • solanaAssetDetails/longTaskTotalDuration: +400%
  • solanaAssetDetails/longTaskMaxDuration: +400%
  • solanaAssetDetails/tbt: +400%
  • solanaAssetDetails/total: +15%
  • solanaAssetDetails/inp: +30%
  • solanaAssetDetails/cls: -52%
  • importSrpHome/lcp: +15%
  • importSrpHome/cls: +135%
  • sendTransactions/openSendPageFromHome: -36%
  • sendTransactions/selectTokenToSendFormLoaded: -14%
  • sendTransactions/reviewTransactionToConfirmationPage: -32%
  • sendTransactions/longTaskCount: -50%
  • sendTransactions/longTaskTotalDuration: -49%
  • sendTransactions/tbt: -51%
  • sendTransactions/total: -32%
  • sendTransactions/cls: -89%
  • swap/openSwapPageFromHome: -23%
  • swap/fetchAndDisplaySwapQuotes: -38%
  • swap/longTaskCount: +25%
  • swap/tbt: -80%
  • swap/total: -38%
  • swap/inp: -14%
  • swap/lcp: -67%
  • swap/cls: -86%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 importSrpHome/INP: p75 288ms
  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 0 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 0 Bytes (0%)

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 67f2d57. Configure here.

parseSentryEnvelopes(bodies).map((item) => item.type),
);
return REQUIRED_TYPES.every((type) => types.has(type));
}, MAX_WAIT_FOR_ENVELOPES_MS)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incomplete capture after wait fails

Medium Severity

The envelope wait uses .catch(() => undefined), so a timeout or other wait failure is ignored and the test still snapshots and diffs (or writes a baseline). There is no check that session, event, and transaction were actually seen, so incomplete captures can pass comparison or produce a wrong v8 baseline.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 67f2d57. Configure here.

@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [1349304] [reused from a0fd448]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 15 pass · 🟡 7 warn · 🔴 3 fail)

Baseline (latest main): a0fd448 | Date: 6/26/2026 | Pipeline: 28265992885 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]🔴 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 3 failures)

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
🔴 load_new_account
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -24%
  • loadNewAccount/total: -24%
  • loadNewAccount/inp: +27%
  • bridgeUserActions/bridge_load_page: +34%
  • bridgeUserActions/longTaskCount: -29%
  • bridgeUserActions/tbt: +19%
  • bridgeUserActions/inp: +12%
  • loadNewAccount/load_new_account: +420%
  • loadNewAccount/total: +420%
  • loadNewAccount/inp: -33%
  • loadNewAccount/lcp: +1111%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -18%
  • confirmTx/fcp: -52%
  • confirmTx/lcp: +1109%
  • bridgeUserActions/bridge_load_page: +112%
  • bridgeUserActions/bridge_load_asset_picker: +53%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +12%
  • bridgeUserActions/fcp: -51%
  • bridgeUserActions/lcp: +1138%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/numNetworkReqs: -15%
  • startupStandardHome/lcp: -38%
  • startupPowerUserHome/longTaskCount: +10%
  • startupStandardHome/domInteractive: -22%
  • startupStandardHome/fcp: -17%
  • startupPowerUserHome/domInteractive: +22%
  • startupPowerUserHome/fcp: +27%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 568ms
  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 3.8s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🔴 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🔴 total
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]
🔴 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -85%
  • onboardingImportWallet/longTaskCount: -47%
  • onboardingImportWallet/longTaskTotalDuration: -83%
  • onboardingImportWallet/longTaskMaxDuration: -86%
  • onboardingImportWallet/tbt: -93%
  • onboardingImportWallet/total: -18%
  • onboardingNewWallet/longTaskTotalDuration: -10%
  • onboardingNewWallet/tbt: -16%
  • solanaAssetDetails/assetClickToPriceChart: +15%
  • solanaAssetDetails/longTaskCount: +400%
  • solanaAssetDetails/longTaskTotalDuration: +400%
  • solanaAssetDetails/longTaskMaxDuration: +400%
  • solanaAssetDetails/tbt: +400%
  • solanaAssetDetails/total: +15%
  • solanaAssetDetails/inp: +30%
  • solanaAssetDetails/cls: -52%
  • importSrpHome/lcp: +15%
  • importSrpHome/cls: +135%
  • sendTransactions/openSendPageFromHome: -36%
  • sendTransactions/selectTokenToSendFormLoaded: -14%
  • sendTransactions/reviewTransactionToConfirmationPage: -32%
  • sendTransactions/longTaskCount: -50%
  • sendTransactions/longTaskTotalDuration: -49%
  • sendTransactions/tbt: -51%
  • sendTransactions/total: -32%
  • sendTransactions/cls: -89%
  • swap/openSwapPageFromHome: -23%
  • swap/fetchAndDisplaySwapQuotes: -38%
  • swap/longTaskCount: +25%
  • swap/tbt: -80%
  • swap/total: -38%
  • swap/inp: -14%
  • swap/lcp: -67%
  • swap/cls: -86%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 importSrpHome/INP: p75 288ms
  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 0 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 0 Bytes (0%)

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO-NOT-MERGE Pull requests that should not be merged risk:high size-L team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sentry v10 migration: verify equivalent telemetry coverage (envelope capture-and-diff harness)

1 participant