fix: flaky test `Multichain API Connect wallet to the multichain dapp via `externally_connectable`, call `wallet_createSession` with requested EVM scope that does NOT match one of the users enabled networks the specified EVM scopes that do not match the user's configured networks should be treated as if they were not requested`
Description
The race condition happens because whenever we want to get the results, we take the first result of the items list, which is the last one. However, it can happen that the latest result is not yet loaded, taking the previous result thus making the assert fail.
Now we wait until the expected items are in the results list, then we read the result.
Changelog
CHANGELOG entry:
Related issues
Fixes:
Manual testing steps
- Check ci
Screenshots/Recordings
Before
After
Pre-merge author checklist
- [ ] I've followed MetaMask Contributor Docs and MetaMask Extension Coding Standards.
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] 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] Stabilizes multichain E2E session tests by waiting for expected result items before parsing and adding account verification helpers, updating specs accordingly.
- E2E utilities:
TestDappMultichain.getSessionnow acceptsnumberOfResultItemsand waits for the full results list before parsing to avoid race conditions; addedcheckResultListTotalItems,checkConnectedAccounts, and related selectors.ConnectAccountConfirmationaddscheckForAccountsInPermissionListand simplifies Solana account creation clicks.- Tests updated:
wallet_createSession.spec.ts,wallet_getSession.spec.ts,wallet_revokeSession.spec.tsuse the newgetSession({ numberOfResultItems })and account checks; add assertions for connected accounts and permission list; minor refactors to increase reliability.Written by Cursor Bugbot for commit aadfc3b946e9258233f5468350a60d1eb3e7d721. This will update automatically on new commits. Configure here.
✨ Files requiring CODEOWNER review ✨
🧪 @MetaMask/qa (2 files, +47 -13)
- 📁 test/
- 📁 e2e/
- 📁 page-objects/
- 📁 pages/
- 📁 confirmations/
- 📁 redesign/
- 📄
connect-account-confirmation.ts+15 -12
- 📄
- 📄
test-dapp-multichain.ts+32 -1
- 📁 redesign/
- 📁 confirmations/
- 📁 pages/
- 📁 page-objects/
- 📁 e2e/
👨🔧 @MetaMask/wallet-integrations (3 files, +37 -5)
- 📁 test/
- 📁 e2e/
- 📁 flask/
- 📁 multichain-api/
- 📁 evm/
- 📄
wallet_createSession.spec.ts+28 -2 - 📄
wallet_getSession.spec.ts+6 -2 - 📄
wallet_revokeSession.spec.ts+3 -1
- 📄
- 📁 evm/
- 📁 multichain-api/
- 📁 flask/
- 📁 e2e/
Builds ready [67d830e]
- 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 (1334 ± 107 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 | 1334 | 1081 | 1724 | 107 | 1401 | 1508 |
| load | 1082 | 900 | 1471 | 96 | 1137 | 1241 | |||
| domContentLoaded | 1075 | 892 | 1464 | 95 | 1131 | 1233 | |||
| domInteractive | 27 | 17 | 100 | 19 | 25 | 87 | |||
| firstPaint | 506 | 84 | 1493 | 417 | 1059 | 1174 | |||
| backgroundConnect | 226 | 203 | 261 | 13 | 236 | 256 | |||
| firstReactRender | 53 | 34 | 143 | 19 | 60 | 80 | |||
| getState | 45 | 16 | 163 | 25 | 50 | 106 | |||
| initialActions | 1 | 0 | 7 | 1 | 1 | 3 | |||
| loadScripts | 857 | 683 | 1217 | 91 | 909 | 1012 | |||
| setupStore | 13 | 7 | 29 | 4 | 16 | 21 | |||
| numNetworkReqs | 13 | 6 | 74 | 18 | 6 | 68 | |||
| Browserify | Power User Home | uiStartup | 1907 | 1559 | 2569 | 158 | 1993 | 2173 | |
| load | 1087 | 892 | 1442 | 128 | 1175 | 1293 | |||
| domContentLoaded | 1077 | 885 | 1434 | 128 | 1166 | 1279 | |||
| domInteractive | 30 | 17 | 106 | 21 | 27 | 91 | |||
| firstPaint | 544 | 100 | 1357 | 419 | 993 | 1276 | |||
| backgroundConnect | 253 | 203 | 620 | 95 | 239 | 568 | |||
| firstReactRender | 47 | 37 | 65 | 5 | 49 | 57 | |||
| getState | 198 | 147 | 713 | 76 | 204 | 244 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 863 | 683 | 1196 | 127 | 954 | 1075 | |||
| setupStore | 15 | 7 | 49 | 7 | 15 | 34 | |||
| numNetworkReqs | 72 | 56 | 137 | 20 | 70 | 130 | |||
| Webpack | Standard Home | uiStartup | 829 | 694 | 1124 | 79 | 872 | 972 | |
| load | 673 | 581 | 896 | 74 | 724 | 811 | |||
| domContentLoaded | 667 | 576 | 884 | 74 | 717 | 806 | |||
| domInteractive | 27 | 16 | 105 | 19 | 23 | 83 | |||
| firstPaint | 270 | 104 | 889 | 198 | 267 | 717 | |||
| backgroundConnect | 12 | 6 | 78 | 10 | 12 | 29 | |||
| firstReactRender | 54 | 34 | 213 | 32 | 50 | 130 | |||
| getState | 27 | 14 | 59 | 11 | 35 | 47 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 664 | 574 | 874 | 73 | 715 | 803 | |||
| setupStore | 11 | 6 | 29 | 4 | 12 | 20 | |||
| numNetworkReqs | 14 | 6 | 81 | 20 | 6 | 74 | |||
| Webpack | Power User Home | uiStartup | 1463 | 1109 | 2285 | 214 | 1633 | 1830 | |
| load | 748 | 602 | 1123 | 105 | 864 | 917 | |||
| domContentLoaded | 740 | 594 | 1117 | 104 | 852 | 909 | |||
| domInteractive | 34 | 17 | 241 | 35 | 27 | 118 | |||
| firstPaint | 313 | 98 | 894 | 223 | 371 | 861 | |||
| backgroundConnect | 100 | 8 | 678 | 182 | 101 | 612 | |||
| firstReactRender | 52 | 42 | 76 | 7 | 55 | 67 | |||
| getState | 198 | 141 | 827 | 94 | 198 | 265 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 737 | 592 | 1109 | 103 | 850 | 906 | |||
| setupStore | 14 | 6 | 38 | 7 | 14 | 35 | |||
| numNetworkReqs | 72 | 58 | 150 | 21 | 68 | 135 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1342 | 1073 | 2242 | 204 | 1432 | 1789 |
| load | 1058 | 897 | 1365 | 98 | 1126 | 1239 | |||
| domContentLoaded | 1057 | 893 | 1365 | 98 | 1126 | 1239 | |||
| domInteractive | 60 | 32 | 184 | 34 | 85 | 136 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 56 | 22 | 307 | 48 | 63 | 167 | |||
| firstReactRender | 39 | 30 | 79 | 9 | 42 | 60 | |||
| getState | 15 | 6 | 114 | 19 | 11 | 53 | |||
| initialActions | 1 | 0 | 2 | 0 | 2 | 2 | |||
| loadScripts | 1031 | 881 | 1257 | 87 | 1093 | 1206 | |||
| setupStore | 22 | 5 | 825 | 83 | 11 | 41 | |||
| numNetworkReqs | 15 | 6 | 90 | 21 | 8 | 76 | |||
| Browserify | Power User Home | uiStartup | 2627 | 1687 | 3845 | 562 | 3090 | 3438 | |
| load | 1642 | 1002 | 2754 | 504 | 2136 | 2377 | |||
| domContentLoaded | 1642 | 1002 | 2753 | 504 | 2132 | 2377 | |||
| domInteractive | 175 | 32 | 1125 | 271 | 131 | 969 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 209 | 25 | 1108 | 244 | 225 | 995 | |||
| firstReactRender | 54 | 35 | 105 | 12 | 59 | 78 | |||
| getState | 143 | 77 | 961 | 92 | 164 | 209 | |||
| initialActions | 4 | 0 | 66 | 9 | 2 | 30 | |||
| loadScripts | 1523 | 971 | 2565 | 463 | 2017 | 2325 | |||
| setupStore | 31 | 5 | 246 | 41 | 36 | 105 | |||
| numNetworkReqs | 76 | 58 | 130 | 22 | 84 | 127 | |||
| Webpack | Standard Home | uiStartup | 1651 | 1341 | 3197 | 284 | 1678 | 2238 | |
| load | 1352 | 1126 | 2896 | 235 | 1362 | 1600 | |||
| domContentLoaded | 1351 | 1126 | 2895 | 235 | 1362 | 1600 | |||
| domInteractive | 85 | 28 | 1483 | 144 | 88 | 134 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 68 | 18 | 242 | 49 | 88 | 170 | |||
| firstReactRender | 45 | 34 | 119 | 11 | 48 | 57 | |||
| getState | 18 | 7 | 142 | 22 | 15 | 66 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1318 | 1111 | 2791 | 225 | 1332 | 1512 | |||
| setupStore | 22 | 6 | 225 | 36 | 15 | 101 | |||
| numNetworkReqs | 15 | 6 | 85 | 21 | 9 | 75 | |||
| Webpack | Power User Home | uiStartup | 2745 | 1826 | 3902 | 540 | 3174 | 3516 | |
| load | 1903 | 1141 | 2641 | 504 | 2368 | 2559 | |||
| domContentLoaded | 1903 | 1141 | 2641 | 504 | 2368 | 2559 | |||
| domInteractive | 233 | 29 | 1019 | 330 | 301 | 975 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 167 | 25 | 1089 | 217 | 199 | 929 | |||
| firstReactRender | 58 | 35 | 137 | 14 | 63 | 75 | |||
| getState | 133 | 77 | 250 | 47 | 157 | 238 | |||
| initialActions | 3 | 0 | 39 | 5 | 2 | 7 | |||
| loadScripts | 1811 | 1124 | 2623 | 483 | 2284 | 2495 | |||
| setupStore | 37 | 5 | 353 | 59 | 47 | 189 | |||
| numNetworkReqs | 76 | 57 | 131 | 22 | 76 | 128 |
📊 Page Load Benchmark Results
Current Commit: 67d830e | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±40ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 715ms (±37ms) 🟢 | historical mean value: 722ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 75ms (±12ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 40ms | 1.00s | 1.32s | 1.05s | 1.32s |
| domContentLoaded | 715ms | 37ms | 695ms | 987ms | 742ms | 987ms |
| firstPaint | 75ms | 12ms | 60ms | 176ms | 84ms | 176ms |
| firstContentfulPaint | 75ms | 12ms | 60ms | 176ms | 84ms | 176ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 58 Bytes (0%)
- ui: 161 Bytes (0%)
- common: 20 Bytes (0%)
Builds ready [dad0855]
- 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 (1215 ± 117 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 | 1215 | 977 | 1588 | 117 | 1283 | 1406 |
| load | 1000 | 829 | 1297 | 89 | 1058 | 1146 | |||
| domContentLoaded | 993 | 822 | 1277 | 87 | 1050 | 1135 | |||
| domInteractive | 24 | 15 | 86 | 17 | 20 | 75 | |||
| firstPaint | 628 | 142 | 1307 | 400 | 1012 | 1141 | |||
| backgroundConnect | 198 | 180 | 239 | 12 | 206 | 222 | |||
| firstReactRender | 41 | 30 | 87 | 11 | 44 | 69 | |||
| getState | 36 | 17 | 153 | 19 | 40 | 66 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 804 | 642 | 1077 | 83 | 851 | 949 | |||
| setupStore | 11 | 5 | 27 | 4 | 12 | 22 | |||
| numNetworkReqs | 14 | 6 | 81 | 20 | 6 | 74 | |||
| Browserify | Power User Home | uiStartup | 1793 | 1441 | 2160 | 169 | 1922 | 2071 | |
| load | 980 | 822 | 1286 | 115 | 1066 | 1186 | |||
| domContentLoaded | 971 | 815 | 1276 | 114 | 1059 | 1176 | |||
| domInteractive | 26 | 16 | 88 | 17 | 23 | 79 | |||
| firstPaint | 615 | 95 | 1296 | 406 | 990 | 1186 | |||
| backgroundConnect | 201 | 180 | 569 | 40 | 204 | 221 | |||
| firstReactRender | 46 | 37 | 79 | 7 | 47 | 66 | |||
| getState | 201 | 150 | 671 | 94 | 202 | 281 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 785 | 637 | 1087 | 111 | 864 | 986 | |||
| setupStore | 15 | 9 | 43 | 8 | 13 | 34 | |||
| numNetworkReqs | 72 | 58 | 159 | 20 | 71 | 131 | |||
| Webpack | Standard Home | uiStartup | 776 | 638 | 1099 | 87 | 836 | 933 | |
| load | 622 | 545 | 823 | 76 | 668 | 781 | |||
| domContentLoaded | 616 | 539 | 817 | 75 | 661 | 776 | |||
| domInteractive | 25 | 14 | 109 | 20 | 20 | 81 | |||
| firstPaint | 273 | 94 | 820 | 193 | 245 | 745 | |||
| backgroundConnect | 12 | 6 | 120 | 12 | 13 | 29 | |||
| firstReactRender | 48 | 30 | 162 | 22 | 50 | 93 | |||
| getState | 29 | 14 | 98 | 14 | 37 | 49 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 613 | 536 | 815 | 74 | 659 | 773 | |||
| setupStore | 10 | 6 | 28 | 4 | 12 | 19 | |||
| numNetworkReqs | 14 | 6 | 79 | 20 | 6 | 73 | |||
| Webpack | Power User Home | uiStartup | 1474 | 1152 | 2036 | 203 | 1628 | 1883 | |
| load | 761 | 612 | 1186 | 113 | 861 | 945 | |||
| domContentLoaded | 753 | 606 | 1172 | 112 | 854 | 938 | |||
| domInteractive | 33 | 17 | 134 | 26 | 28 | 107 | |||
| firstPaint | 305 | 103 | 1063 | 239 | 290 | 871 | |||
| backgroundConnect | 63 | 8 | 642 | 142 | 28 | 565 | |||
| firstReactRender | 51 | 42 | 69 | 5 | 52 | 63 | |||
| getState | 213 | 143 | 797 | 101 | 215 | 327 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 1 | |||
| loadScripts | 750 | 604 | 1162 | 111 | 849 | 933 | |||
| setupStore | 16 | 8 | 42 | 8 | 14 | 37 | |||
| numNetworkReqs | 72 | 56 | 158 | 22 | 68 | 137 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1361 | 1094 | 2125 | 200 | 1453 | 1780 |
| load | 1084 | 931 | 1456 | 107 | 1141 | 1302 | |||
| domContentLoaded | 1084 | 931 | 1456 | 107 | 1141 | 1301 | |||
| domInteractive | 69 | 28 | 231 | 43 | 90 | 141 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 54 | 22 | 272 | 49 | 63 | 197 | |||
| firstReactRender | 38 | 31 | 70 | 7 | 39 | 58 | |||
| getState | 13 | 7 | 87 | 11 | 11 | 32 | |||
| initialActions | 1 | 0 | 2 | 0 | 2 | 2 | |||
| loadScripts | 1056 | 916 | 1314 | 95 | 1120 | 1244 | |||
| setupStore | 25 | 6 | 823 | 86 | 11 | 48 | |||
| numNetworkReqs | 15 | 6 | 85 | 21 | 8 | 75 | |||
| Browserify | Power User Home | uiStartup | 2681 | 1655 | 3712 | 540 | 3114 | 3320 | |
| load | 1660 | 981 | 2718 | 504 | 2148 | 2370 | |||
| domContentLoaded | 1660 | 980 | 2718 | 504 | 2148 | 2369 | |||
| domInteractive | 190 | 33 | 1184 | 294 | 157 | 981 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 204 | 28 | 1166 | 250 | 228 | 976 | |||
| firstReactRender | 57 | 39 | 125 | 13 | 62 | 86 | |||
| getState | 150 | 74 | 1127 | 109 | 170 | 242 | |||
| initialActions | 4 | 1 | 46 | 7 | 3 | 8 | |||
| loadScripts | 1570 | 963 | 2519 | 467 | 2038 | 2271 | |||
| setupStore | 34 | 4 | 350 | 52 | 38 | 111 | |||
| numNetworkReqs | 76 | 59 | 140 | 23 | 69 | 130 | |||
| Webpack | Standard Home | uiStartup | 1570 | 1324 | 2075 | 164 | 1663 | 1913 | |
| load | 1293 | 1106 | 1636 | 110 | 1353 | 1524 | |||
| domContentLoaded | 1292 | 1106 | 1635 | 110 | 1352 | 1524 | |||
| domInteractive | 71 | 29 | 232 | 37 | 88 | 133 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 56 | 18 | 183 | 35 | 66 | 137 | |||
| firstReactRender | 43 | 33 | 103 | 12 | 44 | 73 | |||
| getState | 17 | 7 | 227 | 26 | 13 | 54 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 1262 | 1093 | 1604 | 103 | 1315 | 1499 | |||
| setupStore | 16 | 5 | 166 | 19 | 13 | 49 | |||
| numNetworkReqs | 15 | 6 | 84 | 21 | 8 | 78 | |||
| Webpack | Power User Home | uiStartup | 2865 | 1818 | 3810 | 539 | 3287 | 3588 | |
| load | 1967 | 1171 | 2907 | 522 | 2401 | 2735 | |||
| domContentLoaded | 1966 | 1170 | 2907 | 522 | 2401 | 2734 | |||
| domInteractive | 181 | 32 | 1042 | 282 | 145 | 992 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 203 | 31 | 1265 | 266 | 214 | 1028 | |||
| firstReactRender | 59 | 39 | 122 | 12 | 64 | 78 | |||
| getState | 135 | 73 | 272 | 44 | 153 | 235 | |||
| initialActions | 4 | 1 | 57 | 8 | 2 | 7 | |||
| loadScripts | 1834 | 1151 | 2778 | 499 | 2280 | 2704 | |||
| setupStore | 44 | 6 | 369 | 70 | 38 | 232 | |||
| numNetworkReqs | 75 | 52 | 140 | 24 | 68 | 126 |
📊 Page Load Benchmark Results
Current Commit: dad0855 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.05s (±38ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
- domContentLoaded-> current mean value: 731ms (±36ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 78ms (±13ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.05s | 38ms | 1.02s | 1.33s | 1.08s | 1.33s |
| domContentLoaded | 731ms | 36ms | 704ms | 999ms | 751ms | 999ms |
| firstPaint | 78ms | 13ms | 60ms | 196ms | 84ms | 196ms |
| firstContentfulPaint | 78ms | 13ms | 60ms | 196ms | 84ms | 196ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: 58 Bytes (0%)
- ui: -2.39 KiB (-0.03%)
- common: -737 Bytes (-0.01%)
Builds ready [58ee57a]
- 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 (1259 ± 108 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 | 1259 | 1038 | 1505 | 108 | 1339 | 1458 |
| load | 1031 | 859 | 1291 | 85 | 1090 | 1171 | |||
| domContentLoaded | 1024 | 855 | 1282 | 85 | 1081 | 1165 | |||
| domInteractive | 25 | 15 | 99 | 18 | 21 | 73 | |||
| firstPaint | 479 | 85 | 1183 | 374 | 936 | 1113 | |||
| backgroundConnect | 212 | 199 | 264 | 12 | 215 | 240 | |||
| firstReactRender | 45 | 31 | 100 | 13 | 51 | 73 | |||
| getState | 34 | 17 | 70 | 11 | 41 | 57 | |||
| initialActions | 1 | 0 | 7 | 1 | 1 | 2 | |||
| loadScripts | 819 | 653 | 1071 | 81 | 873 | 951 | |||
| setupStore | 12 | 7 | 29 | 4 | 13 | 21 | |||
| numNetworkReqs | 13 | 6 | 77 | 20 | 6 | 74 | |||
| Browserify | Power User Home | uiStartup | 1907 | 1537 | 2487 | 156 | 1973 | 2162 | |
| load | 1074 | 889 | 1661 | 123 | 1150 | 1261 | |||
| domContentLoaded | 1063 | 882 | 1628 | 123 | 1141 | 1248 | |||
| domInteractive | 31 | 17 | 137 | 22 | 27 | 95 | |||
| firstPaint | 523 | 95 | 1682 | 408 | 993 | 1208 | |||
| backgroundConnect | 242 | 201 | 607 | 79 | 228 | 513 | |||
| firstReactRender | 48 | 38 | 93 | 7 | 50 | 62 | |||
| getState | 190 | 145 | 686 | 54 | 197 | 227 | |||
| initialActions | 1 | 0 | 5 | 1 | 1 | 2 | |||
| loadScripts | 853 | 678 | 1414 | 121 | 928 | 1038 | |||
| setupStore | 16 | 7 | 40 | 8 | 15 | 35 | |||
| numNetworkReqs | 71 | 57 | 144 | 19 | 70 | 133 | |||
| Webpack | Standard Home | uiStartup | 822 | 679 | 1028 | 78 | 869 | 985 | |
| load | 667 | 570 | 871 | 76 | 726 | 818 | |||
| domContentLoaded | 662 | 566 | 866 | 76 | 722 | 812 | |||
| domInteractive | 26 | 14 | 120 | 21 | 22 | 83 | |||
| firstPaint | 228 | 83 | 864 | 178 | 218 | 727 | |||
| backgroundConnect | 12 | 6 | 74 | 9 | 13 | 29 | |||
| firstReactRender | 53 | 32 | 209 | 34 | 58 | 132 | |||
| getState | 29 | 14 | 190 | 19 | 35 | 47 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 3 | |||
| loadScripts | 659 | 563 | 857 | 75 | 719 | 802 | |||
| setupStore | 11 | 5 | 31 | 4 | 12 | 19 | |||
| numNetworkReqs | 14 | 6 | 88 | 20 | 6 | 73 | |||
| Webpack | Power User Home | uiStartup | 1396 | 1080 | 2070 | 202 | 1494 | 1792 | |
| load | 725 | 599 | 1082 | 101 | 803 | 911 | |||
| domContentLoaded | 717 | 592 | 1075 | 101 | 795 | 903 | |||
| domInteractive | 31 | 17 | 127 | 26 | 26 | 113 | |||
| firstPaint | 280 | 93 | 939 | 215 | 312 | 760 | |||
| backgroundConnect | 97 | 7 | 656 | 168 | 107 | 573 | |||
| firstReactRender | 50 | 39 | 77 | 6 | 52 | 61 | |||
| getState | 176 | 141 | 300 | 26 | 185 | 246 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 1 | |||
| loadScripts | 714 | 590 | 1064 | 100 | 793 | 900 | |||
| setupStore | 14 | 6 | 43 | 7 | 13 | 36 | |||
| numNetworkReqs | 72 | 58 | 212 | 23 | 68 | 131 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1394 | 1091 | 2617 | 218 | 1482 | 1766 |
| load | 1119 | 924 | 2317 | 160 | 1173 | 1302 | |||
| domContentLoaded | 1118 | 924 | 2312 | 160 | 1172 | 1301 | |||
| domInteractive | 78 | 32 | 1206 | 118 | 88 | 142 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 60 | 18 | 323 | 50 | 74 | 179 | |||
| firstReactRender | 40 | 30 | 73 | 9 | 44 | 65 | |||
| getState | 14 | 7 | 202 | 21 | 12 | 30 | |||
| initialActions | 1 | 0 | 3 | 0 | 1 | 2 | |||
| loadScripts | 1085 | 908 | 2211 | 146 | 1137 | 1251 | |||
| setupStore | 16 | 5 | 126 | 20 | 12 | 54 | |||
| numNetworkReqs | 15 | 6 | 84 | 21 | 8 | 73 | |||
| Browserify | Power User Home | uiStartup | 2566 | 1599 | 3483 | 511 | 2977 | 3269 | |
| load | 1625 | 956 | 2415 | 480 | 2062 | 2336 | |||
| domContentLoaded | 1625 | 955 | 2415 | 480 | 2062 | 2336 | |||
| domInteractive | 160 | 31 | 1003 | 275 | 84 | 973 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 205 | 24 | 1081 | 246 | 207 | 969 | |||
| firstReactRender | 52 | 35 | 178 | 16 | 57 | 71 | |||
| getState | 130 | 60 | 241 | 43 | 162 | 210 | |||
| initialActions | 2 | 1 | 38 | 4 | 2 | 3 | |||
| loadScripts | 1526 | 941 | 2341 | 455 | 1946 | 2209 | |||
| setupStore | 37 | 3 | 401 | 60 | 35 | 146 | |||
| numNetworkReqs | 75 | 56 | 134 | 21 | 84 | 123 | |||
| Webpack | Standard Home | uiStartup | 1647 | 1350 | 3116 | 226 | 1747 | 2038 | |
| load | 1348 | 1148 | 2820 | 179 | 1391 | 1557 | |||
| domContentLoaded | 1347 | 1148 | 2820 | 179 | 1390 | 1556 | |||
| domInteractive | 84 | 29 | 248 | 46 | 120 | 144 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 62 | 23 | 182 | 40 | 78 | 150 | |||
| firstReactRender | 45 | 35 | 94 | 10 | 50 | 58 | |||
| getState | 19 | 7 | 245 | 32 | 15 | 42 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1316 | 1133 | 2793 | 177 | 1357 | 1525 | |||
| setupStore | 21 | 5 | 178 | 29 | 15 | 95 | |||
| numNetworkReqs | 15 | 6 | 90 | 21 | 8 | 74 | |||
| Webpack | Power User Home | uiStartup | 2611 | 1758 | 3874 | 504 | 2990 | 3358 | |
| load | 1868 | 1154 | 2635 | 455 | 2299 | 2427 | |||
| domContentLoaded | 1868 | 1154 | 2635 | 456 | 2299 | 2427 | |||
| domInteractive | 249 | 28 | 1059 | 354 | 219 | 996 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 151 | 24 | 1071 | 186 | 188 | 475 | |||
| firstReactRender | 54 | 37 | 107 | 11 | 57 | 79 | |||
| getState | 126 | 67 | 268 | 47 | 155 | 222 | |||
| initialActions | 2 | 0 | 7 | 1 | 2 | 3 | |||
| loadScripts | 1784 | 1138 | 2530 | 435 | 2211 | 2400 | |||
| setupStore | 26 | 4 | 245 | 37 | 27 | 92 | |||
| numNetworkReqs | 74 | 48 | 129 | 20 | 80 | 123 |
📊 Page Load Benchmark Results
Current Commit: 58ee57a | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±89ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 721ms (±87ms) 🟢 | historical mean value: 725ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 81ms (±65ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 89ms | 1.00s | 1.87s | 1.07s | 1.87s |
| domContentLoaded | 721ms | 87ms | 695ms | 1.55s | 747ms | 1.55s |
| firstPaint | 81ms | 65ms | 60ms | 728ms | 84ms | 728ms |
| firstContentfulPaint | 81ms | 65ms | 60ms | 728ms | 84ms | 728ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: 116 Bytes (0%)
- ui: -2.38 KiB (-0.03%)
- common: -582 Bytes (-0.01%)
Builds ready [aadfc3b]
- 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 (1265 ± 111 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 | 1265 | 1012 | 1643 | 111 | 1338 | 1433 |
| load | 1043 | 852 | 1299 | 95 | 1094 | 1222 | |||
| domContentLoaded | 1037 | 847 | 1288 | 94 | 1088 | 1206 | |||
| domInteractive | 27 | 15 | 117 | 22 | 22 | 93 | |||
| firstPaint | 568 | 89 | 1288 | 400 | 1016 | 1161 | |||
| backgroundConnect | 215 | 196 | 247 | 12 | 220 | 240 | |||
| firstReactRender | 45 | 32 | 173 | 17 | 49 | 69 | |||
| getState | 37 | 17 | 125 | 18 | 43 | 66 | |||
| initialActions | 1 | 0 | 8 | 1 | 1 | 2 | |||
| loadScripts | 829 | 654 | 1084 | 91 | 881 | 999 | |||
| setupStore | 12 | 6 | 40 | 5 | 13 | 21 | |||
| numNetworkReqs | 13 | 6 | 78 | 19 | 6 | 70 | |||
| Browserify | Power User Home | uiStartup | 1940 | 1600 | 2509 | 173 | 2025 | 2276 | |
| load | 1098 | 900 | 1457 | 130 | 1201 | 1321 | |||
| domContentLoaded | 1088 | 894 | 1448 | 130 | 1187 | 1316 | |||
| domInteractive | 31 | 18 | 171 | 25 | 28 | 94 | |||
| firstPaint | 614 | 106 | 1463 | 441 | 1072 | 1336 | |||
| backgroundConnect | 252 | 203 | 728 | 92 | 236 | 547 | |||
| firstReactRender | 49 | 39 | 85 | 7 | 51 | 65 | |||
| getState | 203 | 147 | 771 | 82 | 209 | 259 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 871 | 684 | 1214 | 127 | 966 | 1091 | |||
| setupStore | 16 | 7 | 46 | 8 | 15 | 35 | |||
| numNetworkReqs | 72 | 58 | 148 | 20 | 68 | 138 | |||
| Webpack | Standard Home | uiStartup | 812 | 671 | 1106 | 88 | 869 | 976 | |
| load | 668 | 567 | 948 | 89 | 744 | 830 | |||
| domContentLoaded | 662 | 564 | 933 | 88 | 738 | 824 | |||
| domInteractive | 26 | 15 | 107 | 20 | 23 | 84 | |||
| firstPaint | 225 | 77 | 716 | 148 | 217 | 643 | |||
| backgroundConnect | 12 | 6 | 87 | 11 | 12 | 35 | |||
| firstReactRender | 46 | 32 | 158 | 20 | 47 | 91 | |||
| getState | 28 | 14 | 65 | 11 | 38 | 49 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 1 | |||
| loadScripts | 659 | 561 | 928 | 87 | 729 | 821 | |||
| setupStore | 11 | 5 | 27 | 4 | 12 | 21 | |||
| numNetworkReqs | 13 | 6 | 79 | 18 | 6 | 68 | |||
| Webpack | Power User Home | uiStartup | 1446 | 1102 | 1862 | 195 | 1631 | 1723 | |
| load | 750 | 602 | 1032 | 112 | 865 | 925 | |||
| domContentLoaded | 743 | 594 | 1026 | 111 | 858 | 918 | |||
| domInteractive | 31 | 17 | 129 | 26 | 26 | 109 | |||
| firstPaint | 312 | 106 | 960 | 243 | 304 | 897 | |||
| backgroundConnect | 77 | 7 | 639 | 156 | 39 | 558 | |||
| firstReactRender | 50 | 40 | 67 | 5 | 52 | 64 | |||
| getState | 202 | 106 | 692 | 80 | 208 | 322 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 740 | 591 | 1023 | 110 | 852 | 915 | |||
| setupStore | 15 | 7 | 48 | 8 | 14 | 36 | |||
| numNetworkReqs | 71 | 57 | 147 | 21 | 67 | 135 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1378 | 1087 | 2432 | 244 | 1440 | 1858 |
| load | 1120 | 927 | 2093 | 191 | 1172 | 1345 | |||
| domContentLoaded | 1119 | 927 | 2093 | 191 | 1171 | 1345 | |||
| domInteractive | 74 | 31 | 974 | 98 | 86 | 152 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 54 | 21 | 238 | 44 | 62 | 155 | |||
| firstReactRender | 39 | 31 | 110 | 11 | 39 | 59 | |||
| getState | 13 | 7 | 127 | 13 | 12 | 33 | |||
| initialActions | 1 | 0 | 2 | 1 | 2 | 2 | |||
| loadScripts | 1088 | 911 | 2009 | 184 | 1141 | 1268 | |||
| setupStore | 17 | 6 | 525 | 52 | 11 | 35 | |||
| numNetworkReqs | 15 | 6 | 82 | 21 | 9 | 76 | |||
| Browserify | Power User Home | uiStartup | 2670 | 1663 | 6282 | 648 | 3040 | 3416 | |
| load | 1671 | 1031 | 4311 | 561 | 2127 | 2370 | |||
| domContentLoaded | 1671 | 1031 | 4311 | 561 | 2126 | 2369 | |||
| domInteractive | 181 | 32 | 3109 | 385 | 98 | 979 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 185 | 24 | 1140 | 220 | 212 | 936 | |||
| firstReactRender | 56 | 34 | 110 | 14 | 62 | 94 | |||
| getState | 137 | 65 | 244 | 42 | 161 | 228 | |||
| initialActions | 2 | 1 | 42 | 4 | 2 | 3 | |||
| loadScripts | 1580 | 1011 | 4133 | 532 | 2036 | 2299 | |||
| setupStore | 50 | 5 | 353 | 78 | 42 | 294 | |||
| numNetworkReqs | 74 | 57 | 129 | 21 | 71 | 125 | |||
| Webpack | Standard Home | uiStartup | 1581 | 1326 | 2328 | 185 | 1681 | 1944 | |
| load | 1293 | 1099 | 1761 | 118 | 1337 | 1557 | |||
| domContentLoaded | 1292 | 1098 | 1761 | 118 | 1336 | 1557 | |||
| domInteractive | 78 | 26 | 231 | 41 | 109 | 144 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 58 | 19 | 285 | 47 | 62 | 147 | |||
| firstReactRender | 43 | 32 | 93 | 9 | 48 | 55 | |||
| getState | 17 | 7 | 134 | 20 | 15 | 50 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1264 | 1084 | 1737 | 111 | 1311 | 1480 | |||
| setupStore | 23 | 6 | 266 | 39 | 17 | 129 | |||
| numNetworkReqs | 15 | 6 | 86 | 21 | 8 | 76 | |||
| Webpack | Power User Home | uiStartup | 2711 | 1833 | 5357 | 598 | 3167 | 3487 | |
| load | 1835 | 1184 | 3609 | 508 | 2288 | 2508 | |||
| domContentLoaded | 1835 | 1184 | 3609 | 508 | 2288 | 2508 | |||
| domInteractive | 218 | 31 | 1146 | 324 | 161 | 1004 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 139 | 26 | 959 | 142 | 191 | 285 | |||
| firstReactRender | 57 | 37 | 122 | 13 | 62 | 78 | |||
| getState | 136 | 67 | 273 | 50 | 170 | 232 | |||
| initialActions | 3 | 1 | 38 | 5 | 2 | 7 | |||
| loadScripts | 1773 | 1154 | 3581 | 493 | 2215 | 2481 | |||
| setupStore | 36 | 5 | 423 | 62 | 39 | 147 | |||
| numNetworkReqs | 76 | 57 | 203 | 25 | 71 | 125 |
📊 Page Load Benchmark Results
Current Commit: aadfc3b | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±44ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 721ms (±39ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 77ms (±16ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 44ms | 1.01s | 1.39s | 1.07s | 1.39s |
| domContentLoaded | 721ms | 39ms | 703ms | 1.03s | 746ms | 1.03s |
| firstPaint | 77ms | 16ms | 60ms | 224ms | 88ms | 224ms |
| firstContentfulPaint | 77ms | 16ms | 60ms | 224ms | 88ms | 224ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: 116 Bytes (0%)
- ui: -2.38 KiB (-0.03%)
- common: -582 Bytes (-0.01%)