Skip to content

test(analytics): add transitional E2E fixture dual-support shim#43467

Merged
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-phase-b-e2e-fixture-shim
Jun 12, 2026
Merged

test(analytics): add transitional E2E fixture dual-support shim#43467
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-phase-b-e2e-fixture-shim

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Description

Part 2 of the Analytics Phase B split (supersedes monolithic #43406).

After foundation (#43430) merged, child analytics PRs failed yarn lint:tsc because migrated E2E tests used canonical fields (analyticsId, optedIn, MOCK_ANALYTICS_ID) while unmigrated tests still used legacy fields (metaMetricsId, participateInMetaMetrics, MOCK_META_METRICS_ID).

This PR adds transitional dual-support in E2E fixtures and flow helpers so domain PRs (#43431#43441) can merge in parallel. Cleanup (#43442) removes this shim last.

Changes:

  • test/e2e/constants.tsMOCK_ANALYTICS_ID plus deprecated MOCK_META_METRICS_ID alias
  • test/e2e/fixtures/fixture-builder-v2.tswithMetaMetricsController accepts legacy and canonical patch fields
  • test/e2e/page-objects/flows/onboarding.flow.tsOnboardingMetricsFlowOptions with resolveOptedIn()
  • test/e2e/page-objects/flows/vault-corruption.flow.ts — accepts canonical onboarding metrics options

Changelog

CHANGELOG entry: null

Related issues

Fixes: https://github.com/MetaMask/MetaMask-planning/issues/7331 (partial)

Manual testing steps

  1. None, E2E tests shall pass as before

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
Test-only helpers and constants; no production wallet or analytics runtime behavior changes.

Overview
Adds a transitional dual-support layer in E2E so analytics migration PRs can land in parallel without yarn lint:tsc failures from mixed legacy and canonical naming.

Constants: Introduces MOCK_ANALYTICS_ID and keeps MOCK_META_METRICS_ID as a deprecated alias to the same value.

Fixtures: withMetaMetricsController now accepts both legacy (metaMetricsId, participateInMetaMetrics) and canonical (analyticsId, optedIn) patches, resolves them with canonical taking precedence for IDs, and writes AnalyticsController state (analyticsId, optedIn) while still merging real MetaMetricsController fields.

Onboarding flows: New OnboardingMetricsFlowOptions and resolveOptedIn() unify opt-in behavior; flows accept optedIn alongside deprecated participateInMetaMetrics. Post-metrics wait accepts either analyticsId or metaMetricsId in app state.

Vault corruption: onboardThenExecuteScript / onboardThenTriggerCorruptionFlow use the shared metrics options type and forward optedIn.

Intended to be removed by a follow-up cleanup PR once all E2E tests use canonical fields.

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

Accept legacy and canonical analytics field names in E2E fixtures,
constants, and onboarding flow helpers until all domain PRs merge.

Co-authored-by: Cursor <cursoragent@cursor.com>
@mm-token-exchange-service

mm-token-exchange-service Bot commented Jun 11, 2026

Copy link
Copy Markdown

✨ Files requiring CODEOWNER review ✨

🧪 @MetaMask/qa (2 files, +66 -40)
  • 📁 test/
    • 📁 e2e/
      • 📁 page-objects/
        • 📁 flows/
          • 📄 onboarding.flow.ts +56 -28
          • 📄 vault-corruption.flow.ts +10 -12

@mm-token-exchange-service mm-token-exchange-service Bot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jun 11, 2026
@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.

@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

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

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27360442915 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 confirmSrpToPwForm(p95) [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: -18%
  • loadNewAccount/total: -18%
  • loadNewAccount/cls: -17%
  • bridgeUserActions/bridge_load_asset_picker: +12%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +38%
  • bridgeUserActions/longTaskMaxDuration: -12%
  • bridgeUserActions/tbt: -18%
  • loadNewAccount/load_new_account: +385%
  • loadNewAccount/total: +385%
  • loadNewAccount/inp: -12%
  • loadNewAccount/fcp: -57%
  • loadNewAccount/lcp: +1126%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/lcp: +1143%
  • bridgeUserActions/bridge_load_page: +169%
  • bridgeUserActions/bridge_load_asset_picker: +85%
  • bridgeUserActions/bridge_search_token: +22%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +44%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/lcp: +1174%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
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/domInteractive: -13%
  • startupPowerUserHome/domInteractive: -16%
  • startupPowerUserHome/numNetworkReqs: +13%
  • startupPowerUserHome/fcp: -12%

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

  • 🔴 startupPowerUserHome/INP: p75 576ms
  • 🟡 startupPowerUserHome/LCP: p75 2.9s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🔴 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🟡 doneButtonToHomeScreen
🔴 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/confirmSrpToPwForm: +10%
  • onboardingImportWallet/metricsToWalletReadyScreen: +12%
  • onboardingImportWallet/longTaskCount: +39%
  • onboardingImportWallet/longTaskTotalDuration: +38%
  • onboardingImportWallet/longTaskMaxDuration: +29%
  • onboardingImportWallet/tbt: +31%
  • onboardingNewWallet/srpButtonToPwForm: +16%
  • onboardingNewWallet/createPwToRecoveryScreen: +18%
  • onboardingNewWallet/skipBackupToMetricsScreen: +28%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +15%
  • onboardingNewWallet/doneButtonToAssetList: +13%
  • onboardingNewWallet/longTaskCount: +67%
  • onboardingNewWallet/longTaskTotalDuration: +54%
  • onboardingNewWallet/longTaskMaxDuration: +16%
  • onboardingNewWallet/tbt: +14%
  • solanaAssetDetails/assetClickToPriceChart: +23%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: +23%
  • importSrpHome/openAccountMenuAfterLogin: -12%
  • importSrpHome/homeAfterImportWithNewWallet: +10%
  • importSrpHome/inp: +12%
  • sendTransactions/openSendPageFromHome: +29%
  • sendTransactions/selectTokenToSendFormLoaded: +51%
  • sendTransactions/reviewTransactionToConfirmationPage: -35%
  • sendTransactions/longTaskCount: -50%
  • sendTransactions/longTaskTotalDuration: -41%
  • sendTransactions/tbt: -27%
  • sendTransactions/total: -33%
  • sendTransactions/cls: +291%
  • swap/openSwapPageFromHome: +20%
  • swap/fetchAndDisplaySwapQuotes: +34%
  • swap/longTaskTotalDuration: +21%
  • swap/longTaskMaxDuration: +21%
  • swap/tbt: +47%
  • swap/total: +29%
  • swap/cls: +81%

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

  • 🟡 importSrpHome/INP: p75 304ms
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 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%)

Co-authored-by: Cursor <cursoragent@cursor.com>
@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

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

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27362323314 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 confirmSrpToPwForm(p95) [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: -18%
  • loadNewAccount/total: -18%
  • loadNewAccount/cls: -17%
  • bridgeUserActions/bridge_load_asset_picker: +12%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +38%
  • bridgeUserActions/longTaskMaxDuration: -12%
  • bridgeUserActions/tbt: -18%
  • loadNewAccount/load_new_account: +385%
  • loadNewAccount/total: +385%
  • loadNewAccount/inp: -12%
  • loadNewAccount/fcp: -57%
  • loadNewAccount/lcp: +1126%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/lcp: +1143%
  • bridgeUserActions/bridge_load_page: +169%
  • bridgeUserActions/bridge_load_asset_picker: +85%
  • bridgeUserActions/bridge_search_token: +22%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +44%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/lcp: +1174%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
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/domInteractive: -13%
  • startupPowerUserHome/domInteractive: -16%
  • startupPowerUserHome/numNetworkReqs: +13%
  • startupPowerUserHome/fcp: -12%

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

  • 🔴 startupPowerUserHome/INP: p75 576ms
  • 🟡 startupPowerUserHome/LCP: p75 2.9s
User Journey Benchmarks · Samples: 5 · mock API 🔴 3
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🔴 [CI log]
🔴 doneButtonToHomeScreen
🔴 total
🔴 [CI log]
🟡 doneButtonToHomeScreen
🔴 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/confirmSrpToPwForm: +10%
  • onboardingImportWallet/metricsToWalletReadyScreen: +12%
  • onboardingImportWallet/longTaskCount: +39%
  • onboardingImportWallet/longTaskTotalDuration: +38%
  • onboardingImportWallet/longTaskMaxDuration: +29%
  • onboardingImportWallet/tbt: +31%
  • onboardingNewWallet/srpButtonToPwForm: +16%
  • onboardingNewWallet/createPwToRecoveryScreen: +18%
  • onboardingNewWallet/skipBackupToMetricsScreen: +28%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +15%
  • onboardingNewWallet/doneButtonToAssetList: +13%
  • onboardingNewWallet/longTaskCount: +67%
  • onboardingNewWallet/longTaskTotalDuration: +54%
  • onboardingNewWallet/longTaskMaxDuration: +16%
  • onboardingNewWallet/tbt: +14%
  • solanaAssetDetails/assetClickToPriceChart: +23%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: +23%
  • importSrpHome/openAccountMenuAfterLogin: -12%
  • importSrpHome/homeAfterImportWithNewWallet: +10%
  • importSrpHome/inp: +12%
  • sendTransactions/openSendPageFromHome: +29%
  • sendTransactions/selectTokenToSendFormLoaded: +51%
  • sendTransactions/reviewTransactionToConfirmationPage: -35%
  • sendTransactions/longTaskCount: -50%
  • sendTransactions/longTaskTotalDuration: -41%
  • sendTransactions/tbt: -27%
  • sendTransactions/total: -33%
  • sendTransactions/cls: +291%
  • swap/openSwapPageFromHome: +20%
  • swap/fetchAndDisplaySwapQuotes: +34%
  • swap/longTaskTotalDuration: +21%
  • swap/longTaskMaxDuration: +21%
  • swap/tbt: +47%
  • swap/total: +29%
  • swap/cls: +81%

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

  • 🟡 importSrpHome/INP: p75 304ms
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 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%)

@gauthierpetetin gauthierpetetin requested a review from Copilot June 11, 2026 17:19
@gauthierpetetin gauthierpetetin marked this pull request as ready for review June 11, 2026 17:20
@gauthierpetetin gauthierpetetin requested a review from a team as a code owner June 11, 2026 17:20
@gauthierpetetin gauthierpetetin self-assigned this Jun 11, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds a transitional dual-support shim in E2E helpers/fixtures so tests can use either legacy MetaMetrics fields (metaMetricsId, participateInMetaMetrics, MOCK_META_METRICS_ID) or canonical analytics fields (analyticsId, optedIn, MOCK_ANALYTICS_ID) without failing TypeScript lint during the migration window.

Changes:

  • Introduces MOCK_ANALYTICS_ID and keeps MOCK_META_METRICS_ID as a deprecated alias.
  • Extends FixtureBuilderV2.withMetaMetricsController to accept both legacy and canonical patches and apply canonical fields to AnalyticsController state.
  • Adds OnboardingMetricsFlowOptions + resolveOptedIn to unify opt-in behavior and threads optedIn through onboarding-related flows (including vault corruption flow).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
test/e2e/constants.ts Adds canonical MOCK_ANALYTICS_ID and keeps deprecated MOCK_META_METRICS_ID alias for backwards compatibility.
test/e2e/fixtures/fixture-builder-v2.ts Updates withMetaMetricsController to map legacy/canonical inputs into AnalyticsController (analyticsId, optedIn) while still patching MetaMetricsController.
test/e2e/page-objects/flows/onboarding.flow.ts Adds shared metrics options type + resolution helper; updates flows to accept optedIn and wait for either analyticsId or legacy metaMetricsId.
test/e2e/page-objects/flows/vault-corruption.flow.ts Reuses the shared onboarding metrics options type and forwards optedIn into onboarding.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-project-automation github-project-automation Bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue Jun 12, 2026
@gauthierpetetin gauthierpetetin added this pull request to the merge queue Jun 12, 2026
Merged via the queue into main with commit 5befce5 Jun 12, 2026
211 checks passed
@gauthierpetetin gauthierpetetin deleted the refactor/analytics-phase-b-e2e-fixture-shim branch June 12, 2026 04:21
@github-project-automation github-project-automation Bot moved this from Review finalised - Ready to be merged to Merged, Closed or Archived in PR review queue Jun 12, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 12, 2026
@metamaskbot metamaskbot added the release-13.37.0 Issue or pull request that will be included in release 13.37.0 label Jun 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.37.0 Issue or pull request that will be included in release 13.37.0 risk:low size-M team-extension-platform Extension Platform team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants