test: E2E Shield - Change payment method: crypto -> crypto
Description
This PR adds E2E test coverage for changing Shield subscription payment method from one crypto token to another (USDC to USDT). The implementation includes:
-
New E2E Test: Added a test case that verifies the complete flow of changing payment method from USDC to USDT, including:
- Verifying initial payment method is USDC
- Opening payment method modal and selecting USDT
- Verifying payment method change in the subscription approval page
- Confirming the final payment method is updated to USDT
-
Test Infrastructure Improvements:
- Added
createShieldFixtureCrypto()fixture for crypto payment tests with USDC and USDT tokens - Enhanced
ShieldMockttpServiceto supportdefaultPaymentMethodoption for mocking crypto subscriptions by default - Added
selectPaymentMethodInModal()method toShieldDetailPagepage object for selecting payment methods dynamically - Added
checkPaymentMethodInEstimatedChanges()method toShieldSubscriptionApprovePageto verify payment method in the estimated changes section
- Added
-
Page Object Enhancements:
- Added
data-testid="settings-back-button"to the settings back button for more reliable test element selection - Added
clickBackButton()method toShieldClaimPagefor navigation testing
- Added
Changelog
CHANGELOG entry: null
Related issues
Fixes:
Manual testing steps
-
Run the E2E test for Shield subscription payment method change:
yarn test:e2e:chrome test/e2e/tests/shield/shield-subscription-management.spec.ts
-
Verify that the test "should be able to change payment method from crypto to crypto (USDC -> USDT)" passes successfully
-
The test should verify:
- Initial payment method is USDC
- Payment method modal opens and USDT can be selected
- Subscription approval page shows USDT in estimated changes
- After confirmation, payment method is updated to USDT
Screenshots/Recordings
Before
After
Pre-merge author checklist
-
[x] I've followed MetaMask Contributor Docs and MetaMask Extension Coding Standards.
-
[x] I've completed the PR template to the best of my ability
-
[x] I've included tests if applicable
-
[x] I've documented my code using JSDoc format if applicable
-
[ ] I've applied the right labels on the PR (see labeling guidelines). Not required for external contributors.
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] Adds E2E coverage and supporting mocks/UI hooks to change Shield subscription payment token from USDC to USDT.
- E2E Tests:
- Add flow verifying crypto→crypto payment method change (USDC→USDT) in
test/e2e/tests/shield/shield-subscription-management.spec.ts.- Introduce crypto-focused fixture with USDC/USDT balances and local anvil state.
- Mocks/Test Infrastructure:
- Extend
ShieldMockttpService(test/e2e/helpers/shield/mocks.ts):
- Track
#currentPaymentTokenSymboland respectdefaultPaymentMethodoverride.- Return crypto subscription details with dynamic token symbol/address.
- Implement PATCH
/subscriptions/:id/payment-method/cryptoto update token and interval.- Page Objects:
ShieldDetailPage: add selectors/actions to open payment modal and select token.ShieldSubscriptionApprovePage: add check for token symbol in estimated changes.- UI:
- Add
data-testid="shield-detail-payment-method-button"to payment method button (ui/pages/settings/transaction-shield-tab/payment-method-row.tsx).Written by Cursor Bugbot for commit cbddcb45049dcdbd24469c7af6231ced38c9f924. This will update automatically on new commits. Configure here.
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.
✨ Files requiring CODEOWNER review ✨
🧪 @MetaMask/qa (2 files, +53 -0)
- 📁 test/
- 📁 e2e/
- 📁 page-objects/
- 📁 pages/
- 📁 settings/
- 📁 shield/
- 📄
shield-detail-page.ts+32 -0 - 📄
shield-subscription-approve-page.ts+21 -0
- 📄
- 📁 shield/
- 📁 settings/
- 📁 pages/
- 📁 page-objects/
- 📁 e2e/
🔐 @MetaMask/web3auth (1 files, +1 -0)
- 📁 ui/
- 📁 pages/
- 📁 settings/
- 📁 transaction-shield-tab/
- 📄
payment-method-row.tsx+1 -0
- 📄
- 📁 transaction-shield-tab/
- 📁 settings/
- 📁 pages/
Builds ready [900cab8]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1225 ± 106 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1225 | 1017 | 1627 | 106 | 1292 | 1403 |
| load | 1009 | 828 | 1308 | 93 | 1048 | 1168 | |||
| domContentLoaded | 1004 | 823 | 1301 | 92 | 1044 | 1159 | |||
| domInteractive | 20 | 15 | 41 | 6 | 21 | 36 | |||
| firstPaint | 454 | 86 | 1304 | 384 | 963 | 1103 | |||
| backgroundConnect | 206 | 184 | 257 | 13 | 211 | 235 | |||
| firstReactRender | 42 | 29 | 79 | 12 | 48 | 69 | |||
| getState | 34 | 16 | 107 | 15 | 39 | 60 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 3 | |||
| loadScripts | 806 | 643 | 1085 | 89 | 851 | 973 | |||
| setupStore | 12 | 6 | 24 | 4 | 13 | 21 | |||
| numNetworkReqs | 8 | 6 | 30 | 6 | 6 | 28 | |||
| Browserify | Power User Home | uiStartup | 1863 | 1624 | 2321 | 126 | 1925 | 2078 | |
| load | 1065 | 884 | 1406 | 105 | 1155 | 1224 | |||
| domContentLoaded | 1053 | 878 | 1386 | 104 | 1143 | 1215 | |||
| domInteractive | 26 | 16 | 82 | 10 | 26 | 47 | |||
| firstPaint | 505 | 94 | 1411 | 414 | 1016 | 1198 | |||
| backgroundConnect | 253 | 195 | 561 | 96 | 235 | 529 | |||
| firstReactRender | 42 | 35 | 77 | 5 | 44 | 50 | |||
| getState | 190 | 140 | 695 | 60 | 200 | 266 | |||
| initialActions | 1 | 0 | 5 | 1 | 1 | 2 | |||
| loadScripts | 846 | 683 | 1181 | 105 | 937 | 998 | |||
| setupStore | 15 | 9 | 56 | 8 | 14 | 37 | |||
| numNetworkReqs | 67 | 57 | 111 | 12 | 66 | 104 | |||
| Webpack | Standard Home | uiStartup | 826 | 695 | 1268 | 86 | 854 | 957 | |
| load | 648 | 560 | 1046 | 88 | 685 | 809 | |||
| domContentLoaded | 643 | 554 | 1040 | 87 | 680 | 804 | |||
| domInteractive | 22 | 14 | 48 | 8 | 22 | 40 | |||
| firstPaint | 229 | 80 | 963 | 183 | 206 | 698 | |||
| backgroundConnect | 12 | 6 | 30 | 7 | 15 | 28 | |||
| firstReactRender | 51 | 31 | 194 | 34 | 44 | 133 | |||
| getState | 23 | 13 | 45 | 8 | 29 | 39 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 641 | 552 | 1035 | 87 | 678 | 802 | |||
| setupStore | 10 | 6 | 35 | 4 | 11 | 16 | |||
| numNetworkReqs | 8 | 6 | 30 | 6 | 6 | 29 | |||
| Webpack | Power User Home | uiStartup | 1498 | 1207 | 2059 | 155 | 1621 | 1740 | |
| load | 741 | 602 | 967 | 90 | 807 | 894 | |||
| domContentLoaded | 734 | 595 | 951 | 88 | 798 | 883 | |||
| domInteractive | 27 | 17 | 108 | 13 | 28 | 58 | |||
| firstPaint | 266 | 93 | 888 | 206 | 229 | 782 | |||
| backgroundConnect | 64 | 7 | 620 | 136 | 42 | 545 | |||
| firstReactRender | 47 | 39 | 62 | 4 | 49 | 55 | |||
| getState | 198 | 141 | 320 | 40 | 234 | 260 | |||
| initialActions | 1 | 0 | 3 | 0 | 1 | 1 | |||
| loadScripts | 731 | 593 | 938 | 88 | 796 | 881 | |||
| setupStore | 15 | 10 | 39 | 6 | 15 | 35 | |||
| numNetworkReqs | 66 | 58 | 102 | 9 | 66 | 96 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1248 | 1091 | 1658 | 128 | 1302 | 1540 |
| load | 1022 | 917 | 1347 | 84 | 1051 | 1225 | |||
| domContentLoaded | 1022 | 917 | 1347 | 84 | 1049 | 1220 | |||
| domInteractive | 51 | 31 | 151 | 26 | 66 | 97 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 38 | 18 | 122 | 22 | 39 | 98 | |||
| firstReactRender | 36 | 30 | 61 | 6 | 37 | 51 | |||
| getState | 12 | 6 | 148 | 19 | 10 | 21 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 998 | 902 | 1256 | 74 | 1030 | 1176 | |||
| setupStore | 10 | 6 | 43 | 4 | 10 | 20 | |||
| numNetworkReqs | 8 | 6 | 28 | 5 | 7 | 23 | |||
| Browserify | Power User Home | uiStartup | 2810 | 1716 | 3753 | 641 | 3355 | 3672 | |
| load | 1766 | 958 | 2642 | 580 | 2300 | 2581 | |||
| domContentLoaded | 1765 | 957 | 2635 | 580 | 2300 | 2581 | |||
| domInteractive | 121 | 30 | 1194 | 224 | 81 | 1041 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 205 | 25 | 1219 | 268 | 220 | 1084 | |||
| firstReactRender | 60 | 39 | 194 | 23 | 64 | 87 | |||
| getState | 162 | 89 | 374 | 65 | 195 | 285 | |||
| initialActions | 3 | 1 | 40 | 6 | 2 | 7 | |||
| loadScripts | 1661 | 941 | 2572 | 542 | 2213 | 2431 | |||
| setupStore | 57 | 5 | 364 | 79 | 61 | 276 | |||
| numNetworkReqs | 69 | 57 | 122 | 15 | 67 | 112 | |||
| Webpack | Standard Home | uiStartup | 1572 | 1304 | 3004 | 252 | 1599 | 2083 | |
| load | 1270 | 1091 | 2630 | 207 | 1295 | 1418 | |||
| domContentLoaded | 1269 | 1090 | 2629 | 207 | 1295 | 1417 | |||
| domInteractive | 74 | 29 | 1495 | 147 | 83 | 156 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 46 | 18 | 240 | 32 | 52 | 117 | |||
| firstReactRender | 44 | 34 | 87 | 8 | 46 | 60 | |||
| getState | 17 | 7 | 204 | 28 | 14 | 53 | |||
| initialActions | 1 | 0 | 6 | 1 | 2 | 2 | |||
| loadScripts | 1247 | 1076 | 2609 | 206 | 1277 | 1390 | |||
| setupStore | 13 | 6 | 87 | 10 | 12 | 27 | |||
| numNetworkReqs | 8 | 6 | 27 | 6 | 8 | 25 | |||
| Webpack | Power User Home | uiStartup | 2748 | 1732 | 4348 | 583 | 3209 | 3515 | |
| load | 1779 | 1110 | 3339 | 538 | 2285 | 2568 | |||
| domContentLoaded | 1779 | 1110 | 3339 | 538 | 2285 | 2568 | |||
| domInteractive | 122 | 29 | 1232 | 238 | 84 | 954 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 183 | 27 | 1306 | 263 | 183 | 985 | |||
| firstReactRender | 55 | 38 | 132 | 14 | 58 | 85 | |||
| getState | 157 | 68 | 1170 | 148 | 170 | 256 | |||
| initialActions | 2 | 0 | 40 | 4 | 2 | 3 | |||
| loadScripts | 1665 | 1092 | 2604 | 474 | 2186 | 2371 | |||
| setupStore | 34 | 4 | 317 | 57 | 29 | 171 | |||
| numNetworkReqs | 70 | 56 | 114 | 12 | 77 | 96 |
📊 Page Load Benchmark Results
Current Commit: 900cab8 | Date: 12/6/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.04s (±40ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
- domContentLoaded-> current mean value: 723ms (±37ms) 🟢 | historical mean value: 718ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 76ms (±11ms) 🟢 | historical mean value: 76ms ⬆️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.04s | 40ms | 1.00s | 1.31s | 1.07s | 1.31s |
| domContentLoaded | 723ms | 37ms | 698ms | 988ms | 746ms | 988ms |
| firstPaint | 76ms | 11ms | 60ms | 160ms | 88ms | 160ms |
| firstContentfulPaint | 76ms | 11ms | 60ms | 160ms | 88ms | 160ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 0 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [dbb9a2f]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1288 ± 93 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1288 | 1084 | 1637 | 93 | 1345 | 1420 |
| load | 1055 | 888 | 1298 | 84 | 1097 | 1205 | |||
| domContentLoaded | 1049 | 886 | 1288 | 83 | 1093 | 1200 | |||
| domInteractive | 22 | 16 | 46 | 6 | 22 | 37 | |||
| firstPaint | 506 | 95 | 1293 | 410 | 1041 | 1152 | |||
| backgroundConnect | 219 | 199 | 284 | 13 | 225 | 244 | |||
| firstReactRender | 47 | 33 | 88 | 11 | 51 | 70 | |||
| getState | 39 | 16 | 122 | 20 | 44 | 91 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 836 | 673 | 1078 | 81 | 871 | 983 | |||
| setupStore | 13 | 6 | 69 | 7 | 14 | 25 | |||
| numNetworkReqs | 8 | 6 | 33 | 7 | 6 | 29 | |||
| Browserify | Power User Home | uiStartup | 1882 | 1645 | 2159 | 104 | 1955 | 2031 | |
| load | 1088 | 883 | 1334 | 99 | 1161 | 1236 | |||
| domContentLoaded | 1079 | 878 | 1326 | 99 | 1155 | 1225 | |||
| domInteractive | 25 | 16 | 56 | 8 | 27 | 47 | |||
| firstPaint | 532 | 89 | 1285 | 411 | 1033 | 1204 | |||
| backgroundConnect | 251 | 196 | 620 | 100 | 228 | 575 | |||
| firstReactRender | 47 | 39 | 88 | 6 | 49 | 57 | |||
| getState | 203 | 138 | 683 | 60 | 223 | 278 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 867 | 677 | 1118 | 100 | 940 | 1021 | |||
| setupStore | 16 | 10 | 45 | 7 | 16 | 34 | |||
| numNetworkReqs | 69 | 58 | 116 | 14 | 67 | 113 | |||
| Webpack | Standard Home | uiStartup | 852 | 732 | 1156 | 76 | 873 | 1021 | |
| load | 656 | 575 | 994 | 68 | 690 | 769 | |||
| domContentLoaded | 650 | 568 | 987 | 68 | 683 | 763 | |||
| domInteractive | 22 | 15 | 41 | 6 | 22 | 39 | |||
| firstPaint | 218 | 82 | 750 | 145 | 211 | 620 | |||
| backgroundConnect | 12 | 6 | 38 | 8 | 13 | 31 | |||
| firstReactRender | 56 | 33 | 253 | 39 | 57 | 144 | |||
| getState | 29 | 14 | 357 | 34 | 33 | 48 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 647 | 566 | 985 | 68 | 681 | 761 | |||
| setupStore | 10 | 7 | 29 | 4 | 12 | 22 | |||
| numNetworkReqs | 8 | 6 | 30 | 6 | 6 | 23 | |||
| Webpack | Power User Home | uiStartup | 1479 | 1175 | 2368 | 195 | 1609 | 1804 | |
| load | 719 | 585 | 1005 | 92 | 781 | 888 | |||
| domContentLoaded | 712 | 579 | 997 | 91 | 772 | 880 | |||
| domInteractive | 26 | 15 | 83 | 12 | 26 | 53 | |||
| firstPaint | 243 | 91 | 840 | 173 | 240 | 704 | |||
| backgroundConnect | 78 | 6 | 636 | 151 | 58 | 545 | |||
| firstReactRender | 49 | 41 | 83 | 6 | 50 | 62 | |||
| getState | 185 | 141 | 682 | 58 | 195 | 246 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 709 | 577 | 988 | 91 | 769 | 878 | |||
| setupStore | 14 | 8 | 45 | 7 | 14 | 36 | |||
| numNetworkReqs | 69 | 59 | 207 | 17 | 68 | 96 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1248 | 1071 | 1774 | 141 | 1309 | 1642 |
| load | 1025 | 891 | 1390 | 94 | 1069 | 1279 | |||
| domContentLoaded | 1024 | 886 | 1389 | 94 | 1069 | 1278 | |||
| domInteractive | 55 | 31 | 168 | 27 | 76 | 121 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 39 | 21 | 302 | 34 | 36 | 104 | |||
| firstReactRender | 35 | 29 | 64 | 6 | 36 | 49 | |||
| getState | 11 | 6 | 90 | 10 | 9 | 21 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1001 | 873 | 1369 | 85 | 1033 | 1203 | |||
| setupStore | 11 | 5 | 203 | 20 | 9 | 20 | |||
| numNetworkReqs | 8 | 6 | 26 | 6 | 6 | 25 | |||
| Browserify | Power User Home | uiStartup | 2577 | 1614 | 3746 | 580 | 3086 | 3320 | |
| load | 1576 | 945 | 2962 | 544 | 2062 | 2348 | |||
| domContentLoaded | 1575 | 945 | 2961 | 544 | 2062 | 2347 | |||
| domInteractive | 149 | 32 | 1743 | 306 | 86 | 1041 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 150 | 20 | 1178 | 211 | 175 | 392 | |||
| firstReactRender | 55 | 38 | 109 | 12 | 57 | 86 | |||
| getState | 144 | 83 | 413 | 61 | 168 | 256 | |||
| initialActions | 2 | 0 | 32 | 3 | 2 | 3 | |||
| loadScripts | 1494 | 931 | 2944 | 521 | 1963 | 2320 | |||
| setupStore | 52 | 5 | 1147 | 131 | 38 | 312 | |||
| numNetworkReqs | 71 | 57 | 120 | 15 | 69 | 109 | |||
| Webpack | Standard Home | uiStartup | 1508 | 1276 | 1902 | 144 | 1605 | 1826 | |
| load | 1231 | 1088 | 1606 | 100 | 1292 | 1446 | |||
| domContentLoaded | 1231 | 1088 | 1606 | 100 | 1291 | 1445 | |||
| domInteractive | 57 | 27 | 370 | 49 | 78 | 155 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 45 | 17 | 199 | 27 | 46 | 111 | |||
| firstReactRender | 41 | 32 | 95 | 9 | 43 | 54 | |||
| getState | 15 | 7 | 169 | 19 | 15 | 26 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 1206 | 1072 | 1584 | 96 | 1264 | 1384 | |||
| setupStore | 13 | 5 | 97 | 13 | 12 | 26 | |||
| numNetworkReqs | 8 | 6 | 27 | 6 | 7 | 25 | |||
| Webpack | Power User Home | uiStartup | 2897 | 1851 | 4351 | 583 | 3293 | 3587 | |
| load | 1916 | 1191 | 3572 | 555 | 2346 | 2621 | |||
| domContentLoaded | 1916 | 1190 | 3571 | 555 | 2346 | 2620 | |||
| domInteractive | 199 | 28 | 1939 | 387 | 91 | 1060 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 152 | 28 | 1054 | 196 | 184 | 386 | |||
| firstReactRender | 61 | 41 | 197 | 19 | 63 | 89 | |||
| getState | 143 | 84 | 365 | 59 | 180 | 271 | |||
| initialActions | 3 | 1 | 63 | 6 | 2 | 3 | |||
| loadScripts | 1829 | 1169 | 3548 | 530 | 2266 | 2573 | |||
| setupStore | 38 | 4 | 363 | 67 | 32 | 227 | |||
| numNetworkReqs | 72 | 59 | 122 | 16 | 70 | 115 |
📊 Page Load Benchmark Results
Current Commit: dbb9a2f | Date: 12/9/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.02s (±40ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
- domContentLoaded-> current mean value: 709ms (±37ms) 🟢 | historical mean value: 734ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 74ms (±14ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.02s | 40ms | 987ms | 1.32s | 1.06s | 1.32s |
| domContentLoaded | 709ms | 37ms | 679ms | 994ms | 741ms | 994ms |
| firstPaint | 74ms | 14ms | 56ms | 188ms | 84ms | 188ms |
| firstContentfulPaint | 74ms | 14ms | 56ms | 188ms | 84ms | 188ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 0 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [2abcfc3]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1257 ± 102 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1257 | 1046 | 1513 | 102 | 1319 | 1438 |
| load | 1025 | 853 | 1246 | 77 | 1070 | 1150 | |||
| domContentLoaded | 1018 | 850 | 1234 | 77 | 1063 | 1145 | |||
| domInteractive | 28 | 15 | 155 | 25 | 22 | 92 | |||
| firstPaint | 552 | 82 | 1251 | 402 | 1025 | 1105 | |||
| backgroundConnect | 212 | 193 | 251 | 11 | 216 | 235 | |||
| firstReactRender | 44 | 32 | 85 | 11 | 47 | 73 | |||
| getState | 39 | 18 | 153 | 23 | 41 | 94 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 813 | 647 | 1019 | 74 | 857 | 941 | |||
| setupStore | 11 | 7 | 24 | 3 | 13 | 18 | |||
| numNetworkReqs | 13 | 6 | 82 | 19 | 6 | 69 | |||
| Browserify | Power User Home | uiStartup | 1916 | 1526 | 2581 | 177 | 2001 | 2221 | |
| load | 1078 | 880 | 1682 | 134 | 1181 | 1269 | |||
| domContentLoaded | 1068 | 874 | 1674 | 134 | 1165 | 1256 | |||
| domInteractive | 31 | 17 | 184 | 26 | 27 | 96 | |||
| firstPaint | 561 | 85 | 1296 | 429 | 1026 | 1230 | |||
| backgroundConnect | 231 | 201 | 634 | 64 | 227 | 258 | |||
| firstReactRender | 47 | 39 | 72 | 5 | 49 | 57 | |||
| getState | 210 | 148 | 709 | 105 | 216 | 326 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 859 | 676 | 1422 | 131 | 954 | 1047 | |||
| setupStore | 16 | 9 | 41 | 8 | 15 | 37 | |||
| numNetworkReqs | 72 | 57 | 230 | 25 | 68 | 132 | |||
| Webpack | Standard Home | uiStartup | 823 | 677 | 1136 | 86 | 879 | 969 | |
| load | 671 | 574 | 943 | 86 | 748 | 851 | |||
| domContentLoaded | 665 | 569 | 935 | 85 | 743 | 844 | |||
| domInteractive | 26 | 16 | 111 | 19 | 22 | 79 | |||
| firstPaint | 252 | 88 | 940 | 184 | 232 | 768 | |||
| backgroundConnect | 13 | 6 | 81 | 11 | 13 | 34 | |||
| firstReactRender | 50 | 34 | 194 | 26 | 53 | 113 | |||
| getState | 28 | 14 | 58 | 11 | 37 | 50 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 1 | |||
| loadScripts | 662 | 567 | 933 | 85 | 740 | 841 | |||
| setupStore | 11 | 6 | 41 | 5 | 12 | 18 | |||
| numNetworkReqs | 13 | 6 | 83 | 20 | 9 | 72 | |||
| Webpack | Power User Home | uiStartup | 1420 | 1100 | 1992 | 165 | 1528 | 1676 | |
| load | 744 | 597 | 933 | 101 | 846 | 915 | |||
| domContentLoaded | 735 | 592 | 925 | 101 | 836 | 900 | |||
| domInteractive | 31 | 17 | 123 | 24 | 27 | 102 | |||
| firstPaint | 343 | 95 | 918 | 249 | 611 | 848 | |||
| backgroundConnect | 85 | 6 | 714 | 161 | 71 | 539 | |||
| firstReactRender | 50 | 39 | 76 | 7 | 51 | 68 | |||
| getState | 185 | 141 | 295 | 35 | 195 | 263 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 732 | 590 | 916 | 100 | 833 | 898 | |||
| setupStore | 15 | 8 | 41 | 9 | 14 | 34 | |||
| numNetworkReqs | 72 | 57 | 225 | 27 | 67 | 138 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1339 | 1093 | 2073 | 172 | 1400 | 1719 |
| load | 1076 | 930 | 1604 | 101 | 1123 | 1245 | |||
| domContentLoaded | 1076 | 929 | 1604 | 101 | 1123 | 1245 | |||
| domInteractive | 72 | 35 | 329 | 45 | 97 | 146 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 53 | 23 | 400 | 48 | 67 | 109 | |||
| firstReactRender | 38 | 31 | 70 | 7 | 39 | 54 | |||
| getState | 15 | 6 | 187 | 22 | 11 | 37 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1048 | 914 | 1576 | 91 | 1084 | 1199 | |||
| setupStore | 12 | 6 | 54 | 8 | 11 | 31 | |||
| numNetworkReqs | 15 | 6 | 86 | 21 | 8 | 77 | |||
| Browserify | Power User Home | uiStartup | 2654 | 1646 | 3803 | 579 | 3086 | 3604 | |
| load | 1664 | 991 | 2687 | 513 | 2127 | 2451 | |||
| domContentLoaded | 1664 | 991 | 2687 | 514 | 2127 | 2451 | |||
| domInteractive | 184 | 31 | 1032 | 284 | 124 | 968 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 162 | 20 | 1133 | 181 | 197 | 439 | |||
| firstReactRender | 53 | 35 | 105 | 12 | 58 | 79 | |||
| getState | 125 | 74 | 239 | 36 | 150 | 196 | |||
| initialActions | 2 | 0 | 30 | 4 | 2 | 3 | |||
| loadScripts | 1587 | 966 | 2464 | 482 | 2014 | 2279 | |||
| setupStore | 45 | 4 | 1044 | 114 | 32 | 207 | |||
| numNetworkReqs | 75 | 56 | 157 | 23 | 74 | 126 | |||
| Webpack | Standard Home | uiStartup | 1645 | 1298 | 2130 | 179 | 1722 | 2046 | |
| load | 1331 | 1135 | 1777 | 104 | 1379 | 1546 | |||
| domContentLoaded | 1331 | 1134 | 1777 | 104 | 1379 | 1546 | |||
| domInteractive | 80 | 29 | 161 | 35 | 102 | 139 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 61 | 22 | 173 | 36 | 78 | 144 | |||
| firstReactRender | 45 | 34 | 74 | 7 | 48 | 58 | |||
| getState | 26 | 7 | 194 | 40 | 16 | 144 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1298 | 1117 | 1752 | 97 | 1349 | 1465 | |||
| setupStore | 21 | 5 | 125 | 24 | 17 | 98 | |||
| numNetworkReqs | 15 | 6 | 83 | 20 | 8 | 73 | |||
| Webpack | Power User Home | uiStartup | 2690 | 1752 | 3986 | 560 | 3113 | 3493 | |
| load | 1909 | 1148 | 3451 | 529 | 2403 | 2720 | |||
| domContentLoaded | 1909 | 1148 | 3451 | 529 | 2403 | 2720 | |||
| domInteractive | 227 | 29 | 1274 | 348 | 224 | 997 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 162 | 24 | 1089 | 210 | 193 | 938 | |||
| firstReactRender | 56 | 34 | 188 | 19 | 59 | 90 | |||
| getState | 142 | 71 | 956 | 94 | 167 | 237 | |||
| initialActions | 2 | 1 | 35 | 3 | 2 | 3 | |||
| loadScripts | 1822 | 1116 | 2757 | 483 | 2245 | 2550 | |||
| setupStore | 28 | 5 | 351 | 44 | 35 | 83 | |||
| numNetworkReqs | 74 | 57 | 134 | 21 | 84 | 125 |
📊 Page Load Benchmark Results
Current Commit: 2abcfc3 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±37ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 716ms (±35ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 75ms (±10ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 37ms | 1.01s | 1.30s | 1.04s | 1.30s |
| domContentLoaded | 716ms | 35ms | 696ms | 982ms | 725ms | 982ms |
| firstPaint | 75ms | 10ms | 60ms | 156ms | 84ms | 156ms |
| firstContentfulPaint | 75ms | 10ms | 60ms | 156ms | 84ms | 156ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 0 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [3e1c699]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1305 ± 116 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1305 | 1058 | 1689 | 116 | 1366 | 1504 |
| load | 1066 | 881 | 1409 | 98 | 1115 | 1221 | |||
| domContentLoaded | 1059 | 874 | 1400 | 97 | 1110 | 1206 | |||
| domInteractive | 28 | 15 | 102 | 21 | 24 | 89 | |||
| firstPaint | 547 | 86 | 1351 | 417 | 1041 | 1187 | |||
| backgroundConnect | 221 | 198 | 271 | 14 | 231 | 248 | |||
| firstReactRender | 50 | 30 | 140 | 19 | 59 | 83 | |||
| getState | 44 | 19 | 157 | 25 | 50 | 103 | |||
| initialActions | 1 | 0 | 5 | 1 | 1 | 3 | |||
| loadScripts | 844 | 668 | 1139 | 91 | 886 | 1003 | |||
| setupStore | 13 | 7 | 37 | 5 | 14 | 26 | |||
| numNetworkReqs | 13 | 6 | 83 | 20 | 6 | 73 | |||
| Browserify | Power User Home | uiStartup | 1912 | 1573 | 2631 | 183 | 1994 | 2224 | |
| load | 1064 | 866 | 1372 | 128 | 1150 | 1301 | |||
| domContentLoaded | 1054 | 852 | 1351 | 128 | 1143 | 1289 | |||
| domInteractive | 30 | 16 | 127 | 23 | 28 | 98 | |||
| firstPaint | 700 | 104 | 1365 | 411 | 1061 | 1242 | |||
| backgroundConnect | 260 | 189 | 783 | 112 | 238 | 550 | |||
| firstReactRender | 51 | 38 | 89 | 7 | 53 | 65 | |||
| getState | 195 | 109 | 323 | 31 | 208 | 253 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 842 | 662 | 1121 | 126 | 938 | 1077 | |||
| setupStore | 14 | 9 | 39 | 7 | 14 | 32 | |||
| numNetworkReqs | 73 | 58 | 218 | 28 | 67 | 143 | |||
| Webpack | Standard Home | uiStartup | 777 | 651 | 982 | 74 | 810 | 911 | |
| load | 629 | 554 | 798 | 69 | 670 | 774 | |||
| domContentLoaded | 623 | 549 | 790 | 68 | 666 | 767 | |||
| domInteractive | 24 | 15 | 90 | 18 | 21 | 78 | |||
| firstPaint | 250 | 81 | 783 | 174 | 218 | 708 | |||
| backgroundConnect | 11 | 6 | 31 | 6 | 13 | 28 | |||
| firstReactRender | 46 | 31 | 175 | 25 | 46 | 119 | |||
| getState | 27 | 13 | 55 | 11 | 35 | 47 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 620 | 547 | 788 | 67 | 664 | 761 | |||
| setupStore | 10 | 5 | 27 | 4 | 12 | 19 | |||
| numNetworkReqs | 13 | 6 | 79 | 20 | 6 | 72 | |||
| Webpack | Power User Home | uiStartup | 1463 | 1142 | 1894 | 192 | 1611 | 1801 | |
| load | 756 | 611 | 946 | 100 | 851 | 926 | |||
| domContentLoaded | 748 | 605 | 937 | 100 | 844 | 918 | |||
| domInteractive | 35 | 16 | 274 | 35 | 28 | 113 | |||
| firstPaint | 306 | 105 | 943 | 225 | 334 | 854 | |||
| backgroundConnect | 47 | 8 | 698 | 119 | 24 | 127 | |||
| firstReactRender | 51 | 41 | 88 | 7 | 54 | 64 | |||
| getState | 209 | 75 | 702 | 94 | 210 | 347 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 1 | |||
| loadScripts | 745 | 603 | 934 | 99 | 840 | 916 | |||
| setupStore | 17 | 7 | 42 | 9 | 15 | 37 | |||
| numNetworkReqs | 71 | 55 | 217 | 25 | 66 | 128 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1333 | 1086 | 2019 | 194 | 1463 | 1749 |
| load | 1052 | 907 | 1719 | 119 | 1113 | 1254 | |||
| domContentLoaded | 1051 | 907 | 1719 | 120 | 1113 | 1254 | |||
| domInteractive | 58 | 31 | 222 | 38 | 75 | 144 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 47 | 21 | 250 | 40 | 50 | 127 | |||
| firstReactRender | 39 | 31 | 69 | 8 | 42 | 59 | |||
| getState | 16 | 6 | 200 | 25 | 12 | 36 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1026 | 889 | 1676 | 113 | 1082 | 1227 | |||
| setupStore | 14 | 6 | 110 | 16 | 12 | 37 | |||
| numNetworkReqs | 15 | 6 | 78 | 20 | 8 | 71 | |||
| Browserify | Power User Home | uiStartup | 2603 | 1558 | 3584 | 564 | 3111 | 3365 | |
| load | 1619 | 964 | 2620 | 515 | 2095 | 2385 | |||
| domContentLoaded | 1618 | 964 | 2620 | 515 | 2095 | 2385 | |||
| domInteractive | 155 | 31 | 991 | 264 | 86 | 971 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 159 | 24 | 1119 | 184 | 182 | 404 | |||
| firstReactRender | 56 | 33 | 104 | 15 | 59 | 95 | |||
| getState | 147 | 67 | 956 | 95 | 166 | 222 | |||
| initialActions | 2 | 1 | 8 | 1 | 2 | 3 | |||
| loadScripts | 1538 | 948 | 2596 | 481 | 1994 | 2268 | |||
| setupStore | 60 | 5 | 1035 | 155 | 40 | 265 | |||
| numNetworkReqs | 74 | 52 | 135 | 21 | 74 | 125 | |||
| Webpack | Standard Home | uiStartup | 1533 | 1273 | 2208 | 159 | 1602 | 1845 | |
| load | 1277 | 1114 | 1515 | 96 | 1325 | 1474 | |||
| domContentLoaded | 1277 | 1114 | 1515 | 96 | 1325 | 1473 | |||
| domInteractive | 72 | 28 | 288 | 40 | 95 | 130 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 55 | 18 | 178 | 34 | 66 | 129 | |||
| firstReactRender | 41 | 32 | 94 | 10 | 43 | 57 | |||
| getState | 16 | 7 | 119 | 19 | 14 | 59 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 1247 | 1100 | 1457 | 87 | 1293 | 1434 | |||
| setupStore | 19 | 4 | 230 | 29 | 15 | 75 | |||
| numNetworkReqs | 15 | 6 | 84 | 21 | 8 | 74 | |||
| Webpack | Power User Home | uiStartup | 2725 | 1793 | 6705 | 666 | 3081 | 3564 | |
| load | 1903 | 1152 | 5857 | 635 | 2363 | 2572 | |||
| domContentLoaded | 1902 | 1152 | 5857 | 635 | 2357 | 2571 | |||
| domInteractive | 284 | 28 | 4047 | 517 | 270 | 1021 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 147 | 25 | 1041 | 150 | 192 | 365 | |||
| firstReactRender | 58 | 38 | 123 | 15 | 61 | 95 | |||
| getState | 128 | 78 | 275 | 47 | 158 | 231 | |||
| initialActions | 2 | 0 | 8 | 1 | 2 | 3 | |||
| loadScripts | 1841 | 1137 | 5834 | 619 | 2288 | 2539 | |||
| setupStore | 33 | 5 | 398 | 60 | 26 | 152 | |||
| numNetworkReqs | 75 | 58 | 139 | 22 | 83 | 128 |
📊 Page Load Benchmark Results
Current Commit: 3e1c699 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.04s (±37ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 724ms (±34ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.04s | 37ms | 1.01s | 1.30s | 1.06s | 1.30s |
| domContentLoaded | 724ms | 34ms | 698ms | 970ms | 746ms | 970ms |
| firstPaint | 77ms | 12ms | 60ms | 184ms | 88ms | 184ms |
| firstContentfulPaint | 77ms | 12ms | 60ms | 184ms | 88ms | 184ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 52 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [cbddcb4]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1317 ± 112 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1317 | 1072 | 1562 | 112 | 1398 | 1503 |
| load | 1076 | 898 | 1288 | 94 | 1153 | 1252 | |||
| domContentLoaded | 1070 | 887 | 1274 | 93 | 1147 | 1244 | |||
| domInteractive | 27 | 16 | 103 | 18 | 23 | 78 | |||
| firstPaint | 462 | 86 | 1258 | 374 | 940 | 1167 | |||
| backgroundConnect | 225 | 203 | 313 | 16 | 234 | 264 | |||
| firstReactRender | 45 | 32 | 172 | 17 | 46 | 70 | |||
| getState | 38 | 17 | 126 | 17 | 43 | 71 | |||
| initialActions | 1 | 0 | 7 | 1 | 1 | 2 | |||
| loadScripts | 852 | 680 | 1060 | 88 | 913 | 1015 | |||
| setupStore | 12 | 6 | 41 | 5 | 13 | 21 | |||
| numNetworkReqs | 13 | 6 | 79 | 18 | 6 | 70 | |||
| Browserify | Power User Home | uiStartup | 1940 | 1581 | 2291 | 145 | 2027 | 2228 | |
| load | 1093 | 898 | 1403 | 121 | 1188 | 1291 | |||
| domContentLoaded | 1083 | 888 | 1383 | 120 | 1181 | 1285 | |||
| domInteractive | 33 | 17 | 153 | 28 | 28 | 116 | |||
| firstPaint | 537 | 104 | 1419 | 416 | 1012 | 1258 | |||
| backgroundConnect | 245 | 205 | 651 | 76 | 236 | 511 | |||
| firstReactRender | 49 | 39 | 107 | 9 | 51 | 62 | |||
| getState | 216 | 153 | 728 | 105 | 223 | 300 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 865 | 675 | 1167 | 117 | 959 | 1064 | |||
| setupStore | 16 | 7 | 37 | 7 | 16 | 34 | |||
| numNetworkReqs | 71 | 58 | 141 | 19 | 68 | 126 | |||
| Webpack | Standard Home | uiStartup | 819 | 677 | 1050 | 86 | 883 | 984 | |
| load | 661 | 564 | 818 | 72 | 730 | 797 | |||
| domContentLoaded | 656 | 560 | 813 | 72 | 724 | 791 | |||
| domInteractive | 26 | 15 | 99 | 20 | 22 | 83 | |||
| firstPaint | 212 | 78 | 800 | 134 | 218 | 628 | |||
| backgroundConnect | 11 | 6 | 36 | 7 | 13 | 29 | |||
| firstReactRender | 50 | 32 | 293 | 33 | 50 | 119 | |||
| getState | 28 | 13 | 58 | 12 | 37 | 54 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 2 | |||
| loadScripts | 653 | 558 | 811 | 71 | 720 | 786 | |||
| setupStore | 11 | 5 | 40 | 5 | 11 | 26 | |||
| numNetworkReqs | 13 | 6 | 80 | 19 | 6 | 72 | |||
| Webpack | Power User Home | uiStartup | 1420 | 1083 | 1949 | 188 | 1578 | 1709 | |
| load | 734 | 579 | 979 | 109 | 845 | 945 | |||
| domContentLoaded | 727 | 572 | 974 | 108 | 837 | 938 | |||
| domInteractive | 31 | 16 | 124 | 25 | 25 | 104 | |||
| firstPaint | 266 | 95 | 908 | 189 | 241 | 817 | |||
| backgroundConnect | 85 | 7 | 631 | 158 | 82 | 576 | |||
| firstReactRender | 50 | 41 | 113 | 8 | 51 | 62 | |||
| getState | 185 | 143 | 675 | 56 | 190 | 242 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 724 | 570 | 966 | 107 | 834 | 935 | |||
| setupStore | 15 | 7 | 60 | 8 | 14 | 36 | |||
| numNetworkReqs | 70 | 56 | 150 | 21 | 66 | 134 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1373 | 1120 | 2568 | 209 | 1449 | 1737 |
| load | 1092 | 939 | 1431 | 96 | 1136 | 1293 | |||
| domContentLoaded | 1091 | 939 | 1431 | 96 | 1136 | 1292 | |||
| domInteractive | 70 | 33 | 190 | 35 | 90 | 135 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 51 | 22 | 207 | 40 | 57 | 152 | |||
| firstReactRender | 39 | 32 | 72 | 7 | 41 | 57 | |||
| getState | 14 | 6 | 203 | 21 | 12 | 30 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1064 | 926 | 1386 | 88 | 1105 | 1243 | |||
| setupStore | 27 | 6 | 1050 | 105 | 15 | 64 | |||
| numNetworkReqs | 16 | 6 | 89 | 22 | 7 | 80 | |||
| Browserify | Power User Home | uiStartup | 2617 | 1591 | 3840 | 572 | 3055 | 3376 | |
| load | 1600 | 983 | 2625 | 508 | 2096 | 2365 | |||
| domContentLoaded | 1600 | 982 | 2625 | 508 | 2095 | 2365 | |||
| domInteractive | 166 | 32 | 1115 | 269 | 97 | 985 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 179 | 24 | 1165 | 209 | 217 | 505 | |||
| firstReactRender | 57 | 38 | 100 | 13 | 63 | 86 | |||
| getState | 130 | 68 | 240 | 45 | 154 | 226 | |||
| initialActions | 3 | 1 | 57 | 7 | 2 | 7 | |||
| loadScripts | 1520 | 941 | 2608 | 476 | 1959 | 2265 | |||
| setupStore | 36 | 4 | 367 | 56 | 43 | 110 | |||
| numNetworkReqs | 75 | 56 | 130 | 21 | 81 | 124 | |||
| Webpack | Standard Home | uiStartup | 1570 | 1316 | 2264 | 181 | 1641 | 1991 | |
| load | 1296 | 1076 | 1733 | 113 | 1354 | 1516 | |||
| domContentLoaded | 1296 | 1075 | 1733 | 113 | 1354 | 1516 | |||
| domInteractive | 81 | 28 | 205 | 41 | 120 | 140 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 52 | 19 | 202 | 34 | 54 | 128 | |||
| firstReactRender | 41 | 33 | 88 | 8 | 43 | 54 | |||
| getState | 15 | 7 | 76 | 12 | 15 | 42 | |||
| initialActions | 1 | 0 | 3 | 0 | 2 | 2 | |||
| loadScripts | 1269 | 1048 | 1699 | 108 | 1325 | 1474 | |||
| setupStore | 15 | 6 | 122 | 17 | 13 | 63 | |||
| numNetworkReqs | 16 | 6 | 86 | 22 | 8 | 79 | |||
| Webpack | Power User Home | uiStartup | 2664 | 1793 | 3896 | 521 | 3085 | 3509 | |
| load | 1850 | 1101 | 2924 | 497 | 2299 | 2558 | |||
| domContentLoaded | 1850 | 1100 | 2923 | 497 | 2299 | 2557 | |||
| domInteractive | 226 | 28 | 1039 | 333 | 170 | 986 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 180 | 25 | 1277 | 230 | 196 | 954 | |||
| firstReactRender | 55 | 35 | 102 | 12 | 60 | 74 | |||
| getState | 130 | 78 | 400 | 54 | 154 | 242 | |||
| initialActions | 2 | 0 | 7 | 1 | 2 | 4 | |||
| loadScripts | 1760 | 1086 | 2680 | 469 | 2195 | 2509 | |||
| setupStore | 31 | 5 | 343 | 45 | 42 | 99 | |||
| numNetworkReqs | 72 | 47 | 132 | 20 | 68 | 119 |
📊 Page Load Benchmark Results
Current Commit: cbddcb4 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±41ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
- domContentLoaded-> current mean value: 717ms (±38ms) 🟢 | historical mean value: 720ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 41ms | 1.01s | 1.35s | 1.06s | 1.35s |
| domContentLoaded | 717ms | 38ms | 698ms | 1.02s | 736ms | 1.02s |
| firstPaint | 76ms | 13ms | 56ms | 192ms | 88ms | 192ms |
| firstContentfulPaint | 76ms | 13ms | 56ms | 192ms | 88ms | 192ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 52 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [a32d25f]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1317 ± 135 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1317 | 1025 | 1735 | 135 | 1412 | 1535 |
| load | 1083 | 873 | 1418 | 116 | 1168 | 1281 | |||
| domContentLoaded | 1076 | 866 | 1397 | 114 | 1160 | 1272 | |||
| domInteractive | 29 | 15 | 125 | 22 | 24 | 89 | |||
| firstPaint | 575 | 90 | 1432 | 432 | 1080 | 1263 | |||
| backgroundConnect | 223 | 202 | 278 | 15 | 228 | 258 | |||
| firstReactRender | 48 | 31 | 194 | 20 | 56 | 75 | |||
| getState | 39 | 18 | 102 | 14 | 47 | 66 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 2 | |||
| loadScripts | 860 | 661 | 1146 | 108 | 939 | 1039 | |||
| setupStore | 12 | 6 | 28 | 4 | 13 | 22 | |||
| numNetworkReqs | 13 | 6 | 84 | 20 | 6 | 72 | |||
| Browserify | Power User Home | uiStartup | 1923 | 1601 | 2493 | 163 | 2017 | 2237 | |
| load | 1088 | 892 | 1554 | 131 | 1196 | 1305 | |||
| domContentLoaded | 1077 | 881 | 1543 | 131 | 1185 | 1295 | |||
| domInteractive | 31 | 17 | 112 | 23 | 27 | 102 | |||
| firstPaint | 533 | 103 | 1332 | 394 | 999 | 1206 | |||
| backgroundConnect | 245 | 200 | 660 | 84 | 231 | 528 | |||
| firstReactRender | 47 | 39 | 93 | 6 | 48 | 58 | |||
| getState | 198 | 141 | 733 | 64 | 207 | 285 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 864 | 684 | 1289 | 128 | 969 | 1090 | |||
| setupStore | 15 | 7 | 49 | 7 | 14 | 32 | |||
| numNetworkReqs | 72 | 59 | 140 | 19 | 69 | 132 | |||
| Webpack | Standard Home | uiStartup | 835 | 691 | 1019 | 76 | 884 | 975 | |
| load | 668 | 579 | 864 | 68 | 730 | 799 | |||
| domContentLoaded | 663 | 573 | 858 | 68 | 725 | 789 | |||
| domInteractive | 25 | 16 | 96 | 17 | 23 | 78 | |||
| firstPaint | 250 | 76 | 795 | 178 | 224 | 729 | |||
| backgroundConnect | 11 | 6 | 85 | 9 | 11 | 20 | |||
| firstReactRender | 58 | 33 | 231 | 38 | 55 | 138 | |||
| getState | 30 | 14 | 97 | 14 | 38 | 55 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 659 | 571 | 848 | 67 | 721 | 781 | |||
| setupStore | 13 | 5 | 65 | 9 | 15 | 29 | |||
| numNetworkReqs | 13 | 6 | 90 | 19 | 6 | 73 | |||
| Webpack | Power User Home | uiStartup | 1417 | 1086 | 1927 | 204 | 1607 | 1758 | |
| load | 735 | 600 | 1010 | 107 | 852 | 920 | |||
| domContentLoaded | 727 | 593 | 1005 | 107 | 843 | 912 | |||
| domInteractive | 31 | 17 | 140 | 25 | 26 | 101 | |||
| firstPaint | 283 | 86 | 732 | 188 | 300 | 691 | |||
| backgroundConnect | 71 | 7 | 677 | 147 | 58 | 553 | |||
| firstReactRender | 49 | 42 | 68 | 4 | 52 | 56 | |||
| getState | 190 | 142 | 771 | 67 | 196 | 262 | |||
| initialActions | 1 | 0 | 1 | 0 | 1 | 1 | |||
| loadScripts | 724 | 590 | 996 | 106 | 835 | 907 | |||
| setupStore | 15 | 7 | 36 | 7 | 14 | 34 | |||
| numNetworkReqs | 74 | 57 | 238 | 30 | 67 | 140 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1519 | 1155 | 2871 | 314 | 1675 | 2272 |
| load | 1199 | 954 | 2459 | 231 | 1271 | 1677 | |||
| domContentLoaded | 1199 | 954 | 2459 | 231 | 1270 | 1676 | |||
| domInteractive | 77 | 33 | 266 | 41 | 95 | 179 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 67 | 21 | 345 | 68 | 71 | 257 | |||
| firstReactRender | 41 | 32 | 73 | 8 | 45 | 59 | |||
| getState | 17 | 7 | 224 | 29 | 15 | 42 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1161 | 938 | 2356 | 215 | 1221 | 1576 | |||
| setupStore | 17 | 6 | 192 | 23 | 15 | 58 | |||
| numNetworkReqs | 15 | 6 | 84 | 20 | 8 | 73 | |||
| Browserify | Power User Home | uiStartup | 2603 | 1606 | 4924 | 544 | 3006 | 3330 | |
| load | 1572 | 983 | 3779 | 533 | 2043 | 2308 | |||
| domContentLoaded | 1571 | 983 | 3779 | 533 | 2043 | 2308 | |||
| domInteractive | 148 | 31 | 1127 | 243 | 101 | 914 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 192 | 28 | 1178 | 231 | 205 | 965 | |||
| firstReactRender | 53 | 37 | 104 | 11 | 56 | 78 | |||
| getState | 138 | 70 | 1028 | 104 | 152 | 240 | |||
| initialActions | 3 | 0 | 38 | 6 | 2 | 7 | |||
| loadScripts | 1469 | 968 | 3614 | 486 | 1917 | 2204 | |||
| setupStore | 58 | 4 | 1015 | 126 | 51 | 239 | |||
| numNetworkReqs | 75 | 51 | 133 | 20 | 80 | 121 | |||
| Webpack | Standard Home | uiStartup | 1599 | 1345 | 2064 | 158 | 1689 | 1937 | |
| load | 1319 | 1164 | 1702 | 101 | 1376 | 1540 | |||
| domContentLoaded | 1319 | 1164 | 1702 | 101 | 1376 | 1540 | |||
| domInteractive | 78 | 21 | 212 | 36 | 105 | 135 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 58 | 19 | 168 | 37 | 61 | 142 | |||
| firstReactRender | 42 | 34 | 88 | 7 | 44 | 55 | |||
| getState | 18 | 8 | 158 | 24 | 15 | 58 | |||
| initialActions | 1 | 0 | 3 | 0 | 2 | 2 | |||
| loadScripts | 1290 | 1147 | 1626 | 95 | 1346 | 1475 | |||
| setupStore | 20 | 6 | 195 | 29 | 14 | 75 | |||
| numNetworkReqs | 15 | 6 | 87 | 21 | 8 | 75 | |||
| Webpack | Power User Home | uiStartup | 2868 | 1764 | 4265 | 600 | 3297 | 3864 | |
| load | 1937 | 1150 | 3192 | 536 | 2415 | 2713 | |||
| domContentLoaded | 1936 | 1150 | 3190 | 536 | 2414 | 2712 | |||
| domInteractive | 193 | 31 | 1172 | 305 | 153 | 979 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 192 | 29 | 1146 | 228 | 210 | 983 | |||
| firstReactRender | 62 | 42 | 206 | 18 | 65 | 78 | |||
| getState | 147 | 83 | 581 | 72 | 170 | 265 | |||
| initialActions | 4 | 1 | 76 | 10 | 3 | 8 | |||
| loadScripts | 1837 | 1135 | 3072 | 507 | 2264 | 2687 | |||
| setupStore | 41 | 5 | 401 | 64 | 46 | 136 | |||
| numNetworkReqs | 72 | 47 | 128 | 24 | 68 | 126 |
📊 Page Load Benchmark Results
Current Commit: a32d25f | Date: 12/11/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.04s (±43ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
- domContentLoaded-> current mean value: 722ms (±39ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 77ms (±11ms) 🟢 | historical mean value: 76ms ⬆️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.04s | 43ms | 1.01s | 1.35s | 1.07s | 1.35s |
| domContentLoaded | 722ms | 39ms | 697ms | 1.01s | 747ms | 1.01s |
| firstPaint | 77ms | 11ms | 60ms | 168ms | 84ms | 168ms |
| firstContentfulPaint | 77ms | 11ms | 60ms | 168ms | 84ms | 168ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 52 Bytes (0%)
- common: 20 Bytes (0%)