Skip to content

Conversation

@Gudahtt
Copy link
Member

@Gudahtt Gudahtt commented Mar 31, 2025

Description

Add E2E test to ensure a window opens upon first install.

This test needs to use a production-like build rather than a standard E2E build, so the existing "vault decryptor" job was repurposed to be more generically for E2E tests using a production-like build.

A global function reloadExtension is added to stateHooks for use by this test. This function had to be enabled for production builds because the test uses a production build.

Open in GitHub Codespaces

Related issues

This is an E2E test for #31332

Manual testing steps

  • Create an MV3 production-like build (yarn dist)
  • Run yarn test:e2e:single ./test/e2e/first-install.spec.ts --browser chrome to run the test on Chrome
  • Create an MV2 production-like build (yarn dist:mv2)
  • Run yarn test:e2e:single ./test/e2e/first-install.spec.ts --browser firefox to run the test on Firefox

Screenshots/Recordings

N/A

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.

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch 2 times, most recently from 897848a to 5efe7d9 Compare March 31, 2025 14:20
@Gudahtt Gudahtt marked this pull request as ready for review March 31, 2025 14:21
@Gudahtt Gudahtt requested a review from a team as a code owner March 31, 2025 14:21
@Gudahtt Gudahtt marked this pull request as draft March 31, 2025 14:21
@metamaskbot
Copy link
Collaborator

Builds ready [5efe7d9]
UI Startup Metrics (1193 ± 56 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1193108413475612311293
load1038934117854938993
domContentLoaded1032928117453941990
domInteractive17133951629
firstPaint790791188384260993
backgroundConnect96535910
firstReactRender19155251931
getState12434868
initialActions001001
loadScripts81672395551847897
setupStore7514279
WebpackHomeuiStartup968780126083964991
load828620101260853914
domContentLoaded822599100460844903
domInteractive16124471436
firstPaint568541013336838888
backgroundConnect16115081539
firstReactRender14122831426
getState7412278
initialActions001000
loadScripts82058899459844896
setupStore7514278
FirefoxBrowserifyHomeuiStartup13921203214516614151835
load12521083199915812671650
domContentLoaded12511083199915812671649
domInteractive10238294358796
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2416123142430
firstReactRender23194452429
getState7336478
initialActions001001
loadScripts12281061197515312481621
setupStore6436368
WebpackHomeuiStartup10398721700170931966
load9067561455150835957
domContentLoaded9067561455150834956
domInteractive118342112814188
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2414110152335
firstReactRender20163732025
getState104661089
initialActions001001
loadScripts8877341432146823966
setupStore9565989
Bundle size diffs
  • background: 0 Bytes (0%)
  • ui: 67 Bytes (0%)
  • common: 0 Bytes (0%)

@Gudahtt Gudahtt marked this pull request as ready for review March 31, 2025 16:37
Comment on lines +289 to +362
/**
* Reload the extension.
*
* This is used for the `first-install` E2E test, which uses a production-like build. This
* function must be present even if `process.env.IN_TEST` is false.
*/
window.stateHooks.reloadExtension = () => {
browser.runtime.reload();
};
Copy link
Contributor

@davidmurdoch davidmurdoch Mar 31, 2025

Choose a reason for hiding this comment

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

Just a quick drive by comment: Since we use browser.runtime.reload() in a few places in our code, it might make sense to update those to use this new stateHooks.reloadExtension line... that way we can say we aren't shipping test functions in production 😆

Copy link
Member Author

Choose a reason for hiding this comment

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

Hmm, interesting idea, but it would probably be better to minimize the reliance on functions we make accessible outside the root compartment. Just to minimize the complexity of any audits into what could go wrong if they're tampered with somehow.

davidmurdoch
davidmurdoch previously approved these changes Mar 31, 2025
@Gudahtt Gudahtt marked this pull request as draft April 14, 2025 17:18
@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 5efe7d9 to 837e3b0 Compare April 14, 2025 17:30
@metamaskbot
Copy link
Collaborator

Builds ready [837e3b0]
UI Startup Metrics (1195 ± 66 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1195109415056612311318
load1042949121957949988
domContentLoaded1036941121657944986
domInteractive17135961628
firstPaint7061061165412239985
backgroundConnect6318278
firstReactRender21164762132
getState14548979
initialActions001001
loadScripts80070696656826913
setupStore7522378
WebpackHomeuiStartup21281711253517022342356
load16361324203714117391842
domContentLoaded16301320202814017351833
domInteractive161088121347
firstPaint179763535123176
backgroundConnect279321323262
firstReactRender215543881216291
getState1431571679
initialActions317136
loadScripts16251319202614017331830
setupStore25729741329
FirefoxBrowserifyHomeuiStartup13591155168611114421571
load12091025155710712671419
domContentLoaded12081024155710612671418
domInteractive10539265358897
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2213170172336
firstReactRender22193632230
getState1041782379
initialActions001001
loadScripts11881009154110712521404
setupStore841761867
WebpackHomeuiStartup15181336191612515691819
load12981152167011013451569
domContentLoaded12971152167011013451568
domInteractive7935158237893
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect231491112444
firstReactRender35295153744
getState10436779
initialActions101011
loadScripts12781136158110613261547
setupStore9553789

@Gudahtt
Copy link
Member Author

Gudahtt commented Apr 14, 2025

Some changes needed here due to #31363, which migrated the vault decryptor test to GHA

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 81c10ba to cbc2979 Compare April 14, 2025 19:47
@metamaskbot
Copy link
Collaborator

Builds ready [cbc2979]
UI Startup Metrics (1204 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1204111314326312501322
load104595012756010771169
domContentLoaded103894612686010711163
domInteractive17126461629
firstPaint71983128041810601143
backgroundConnect7440479
firstReactRender21165872143
getState1344181831
initialActions001000
loadScripts803708101959833924
setupStore74142812
WebpackHomeuiStartup21811749272619723122553
load16811349215516717702043
domContentLoaded16711345211316017621969
domInteractive161168111348
firstPaint1836237164220318
backgroundConnect329267423281
firstReactRender20155385119317359
getState164265301535
initialActions317136
loadScripts16631344211016017591954
setupStore247295432137
FirefoxBrowserifyHomeuiStartup13201136178412713551627
load1179992163812812141470
domContentLoaded1178992163712812131470
domInteractive1064325034116177
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect201371102045
firstReactRender22193432229
getState74364813
initialActions001001
loadScripts1160973162212911981448
setupStore64354616
WebpackHomeuiStartup14881329181010215611688
load1274114615639213261460
domContentLoaded1274114615609213251459
domInteractive77361932284123
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect20154962137
firstReactRender34295153646
getState83305827
initialActions002111
loadScripts1255112515429213031441
setupStore85315823

@github-actions
Copy link
Contributor

This PR has been automatically marked as stale because it has not had recent activity in the last 90 days. It will be closed in 7 days. Thank you for your contributions.

@github-actions github-actions bot added the stale issues and PRs marked as stale label Jul 18, 2025
@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 8b7cc66 to 2f84708 Compare July 23, 2025 00:37
@Gudahtt Gudahtt removed the stale issues and PRs marked as stale label Jul 23, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [2f84708]
UI Startup Metrics (1270 ± 59 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1270113214405913101377
load109098312365511291190
domContentLoaded108397812315611241184
domInteractive18148191739
firstPaint714102121243911001171
backgroundConnect2111952458214229
firstReactRender19153842028
getState94397828
initialActions30174212
loadScripts878774101855918978
setupStore64142710
WebpackHomeuiStartup23921854303119324712766
load18871377241718219742190
domContentLoaded18731371240217619522165
domInteractive2212247321563
firstPaint1616367387192314
backgroundConnect57113128434283
firstReactRender1578740885172339
getState3543327416250
initialActions10220528817
loadScripts18661367238917519492160
setupStore2562555117191
FirefoxBrowserifyHomeuiStartup15451340194611316221784
load1340117715698613991498
domContentLoaded1339117615698613991498
domInteractive1223651987116338
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect261668112755
firstReactRender28216693058
getState123177251243
initialActions40335314
loadScripts1317115615378513701478
setupStore11317422948
WebpackHomeuiStartup17731513244217618682105
load14901296186512515581751
domContentLoaded14891295186512515571750
domInteractive94323895396152
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect27196292944
firstReactRender51426655559
getState1135791531
initialActions10022126839
loadScripts14671268184112415361726
setupStore2252494913195
Benchmark value 1271 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1091 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1083 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 212 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 879 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1378 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1191 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1184 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 229 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 978 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2393 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1888 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1874 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 22 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 57 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 36 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 10 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1867 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2766 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2190 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2166 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 63 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 284 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 250 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 17 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2161 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 191 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 1545 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1340 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1340 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 123 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 13 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1318 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1784 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 1498 exceeds gate value 1495 for firefox browserify home p95 load
Benchmark value 1498 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded
Benchmark value 338 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 58 exceeds gate value 55 for firefox browserify home p95 firstReactRender
Benchmark value 43 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1478 exceeds gate value 1475 for firefox browserify home p95 loadScripts
Benchmark value 48 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1774 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1490 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1490 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 27 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 52 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 10 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1467 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 23 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2105 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1751 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1750 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 59 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 39 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1726 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 195 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 2048ms | Sum of p95 exceeds: 2483.8ms
Sum of all benchmark exceeds: 4531.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 38 Bytes (0%)
  • ui: 67 Bytes (0%)
  • common: 177 Bytes (0%)

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 5dd8e9c to 2dc0bfb Compare July 23, 2025 11:45
@metamaskbot
Copy link
Collaborator

Builds ready [2dc0bfb]
UI Startup Metrics (1273 ± 60 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1273113615776013011386
load109399313615711241185
domContentLoaded108698213565811171180
domInteractive18145281739
firstPaint653138120844010901143
backgroundConnect2111982387213225
firstReactRender20156662028
getState11467101330
initialActions20304112
loadScripts881782114457912970
setupStore74293713
WebpackHomeuiStartup24191808332624425302872
load19111358284824519982357
domContentLoaded18971352284223219772274
domInteractive25132043915117
firstPaint1766260697204390
backgroundConnect57102868334281
firstReactRender1668841370190341
getState203274471457
initialActions9219626718
loadScripts18921348282723019752264
setupStore156219221524
FirefoxBrowserifyHomeuiStartup15391335220115615881897
load13301173167410813771587
domContentLoaded13301173167410813761587
domInteractive13036528106119460
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3015245292759
firstReactRender312174143165
getState936412839
initialActions40366414
loadScripts13061153164710413581495
setupStore12325029729
WebpackHomeuiStartup17711500245318318702146
load14891292218014715581793
domContentLoaded14881291218014715571793
domInteractive99354195996186
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect311782123950
firstReactRender53437475867
getState153230311638
initialActions9019728523
loadScripts14641272215714515361766
setupStore184247391366
Benchmark value 1273 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1093 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1086 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 211 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 882 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1387 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1181 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 226 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 971 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2419 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1912 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1897 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 26 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 57 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 10 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1893 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2873 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2357 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2274 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 117 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 391 exceeds gate value 334 for chrome webpack home p95 firstPaint
Benchmark value 281 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 18 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2265 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1539 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1330 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1330 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 131 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 31 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 32 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1307 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1897 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 1587 exceeds gate value 1495 for firefox browserify home p95 load
Benchmark value 1587 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded
Benchmark value 460 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 65 exceeds gate value 55 for firefox browserify home p95 firstReactRender
Benchmark value 39 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1495 exceeds gate value 1475 for firefox browserify home p95 loadScripts
Benchmark value 29 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1772 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1489 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1489 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 54 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 16 exceeds gate value 15 for firefox webpack home mean getState
Benchmark value 10 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1465 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 18 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2146 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1793 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1793 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 186 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 50 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 67 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 38 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 23 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1766 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 66 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 2125ms | Sum of p95 exceeds: 3372.8ms
Sum of all benchmark exceeds: 5497.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: 972 Bytes (0.02%)
  • ui: 3.54 KiB (0.05%)
  • common: -55.16 KiB (-0.64%)

@metamaskbot
Copy link
Collaborator

Builds ready [d38cb3d]
UI Startup Metrics (1315 ± 65 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1315120315476513431476
load1135101013436011711273
domContentLoaded1127100513326011641255
domInteractive20145281841
firstPaint81088130344511421223
backgroundConnect2562402828261274
firstReactRender20144652132
getState943861121
initialActions30698115
loadScripts878753108358916988
setupStore84979716
WebpackHomeuiStartup24501908312619025312818
load19381407250918920172237
domContentLoaded19281399248818220092223
domInteractive2413258391669
firstPaint1806365188202358
backgroundConnect55104488534279
firstReactRender1549140258187249
getState3732507117244
initialActions9220427715
loadScripts19191395247418520042209
setupStore216222361744
FirefoxBrowserifyHomeuiStartup14811311198213915151747
load1278114014948213321455
domContentLoaded1278113914948213321455
domInteractive1033432250102256
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2414110122440
firstReactRender292064112960
getState122171241141
initialActions8015622537
loadScripts1257111914778113041430
setupStore10317422634
WebpackHomeuiStartup17361526235616718182103
load14571301184812915121778
domContentLoaded14561300184812915121778
domInteractive98293746491304
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect292076113645
firstReactRender52436765664
getState122244241527
initialActions8020722722
loadScripts14331280182212714881748
setupStore2042444215114
Benchmark value 1316 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1136 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1128 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 810 exceeds gate value 800 for chrome browserify home mean firstPaint
Benchmark value 257 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 879 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1476 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1274 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1256 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 42 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 1224 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 275 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 15 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 988 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2451 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1939 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1928 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 25 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 56 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 37 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 10 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1919 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2818 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2237 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2223 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 69 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 358 exceeds gate value 334 for chrome webpack home p95 firstPaint
Benchmark value 279 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 244 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 15 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2209 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1482 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1279 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1278 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 13 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 9 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1257 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1747 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 256 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 60 exceeds gate value 55 for firefox browserify home p95 firstReactRender
Benchmark value 41 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 37 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 34 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1736 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1457 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1457 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 29 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 52 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 8 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1434 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 21 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2103 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1778 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1778 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 304 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 64 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 22 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1748 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 114 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 2060ms | Sum of p95 exceeds: 2946.8ms
Sum of all benchmark exceeds: 5006.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: 972 Bytes (0.02%)
  • ui: 3.54 KiB (0.05%)
  • common: -54.48 KiB (-0.63%)

Gudahtt added a commit that referenced this pull request Jul 31, 2025
Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
Mocha background server disabled (such as those that use a production
build, or those that involve the extension resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

This unblocks #31435
Gudahtt added a commit that referenced this pull request Jul 31, 2025
Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
Mocha background server disabled (such as those that use a production
build, or those that involve the extension resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

This unblocks #31435
Gudahtt added a commit that referenced this pull request Aug 1, 2025
Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
Mocha background server disabled (such as those that use a production
build, or those that involve the extension resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

This unblocks #31435
Gudahtt added a commit that referenced this pull request Aug 1, 2025
Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
Mocha background server disabled (such as those that use a production
build, or those that involve the extension resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

This unblocks #31435
github-merge-queue bot pushed a commit that referenced this pull request Aug 6, 2025
#34772)

## **Description**

Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
WebSocket connection to the background process disabled (such as those
that use a production build, or those that involve the extension
resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/34772?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

This unblocks #31435

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

N/A

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [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](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
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.
mcmire pushed a commit that referenced this pull request Aug 11, 2025
#34772)

## **Description**

Our E2E driver class now allows the methods `switchWindow` and
`switchToWindowWithTitle` methods to be used in tests that have the
WebSocket connection to the background process disabled (such as those
that use a production build, or those that involve the extension
resetting).

Previously the `switchToWindowWithTitleWithoutSocket` driver method
served this purpose, but the test author had to know to use this
alternative method. Plus it didn't allow switching to a window handle,
or any of the other switch methods that internally use `switchWindow`.

There are a couple of switch methods still not supported, but in these
cases an error will be thrown so that the failure reason will be clear.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/34772?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

This unblocks #31435

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

N/A

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [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](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
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.
@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from d38cb3d to 02d8745 Compare August 27, 2025 21:22
@metamaskbot
Copy link
Collaborator

Builds ready [02d8745]
UI Startup Metrics (1240 ± 79 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1240108514067912971378
load108995812687711441234
domContentLoaded108295112617611371226
domInteractive18145471737
firstPaint66574125445011081196
backgroundConnect2392272656244251
firstReactRender24184162538
getState1143061323
initialActions40528314
loadScripts849719101876901995
setupStore85324915
WebpackHomeuiStartup22931691283627124602757
load17881282219321319482041
domContentLoaded17791277211820919382034
domInteractive1912115181563
firstPaint1866543975221358
backgroundConnect3417176263191
firstReactRender2019241591227394
getState224288521444
initialActions5211269
loadScripts17741275210220819332021
setupStore187252341427
FirefoxBrowserifyHomeuiStartup13501187185610614001546
load1189103714257812411312
domContentLoaded1189103714257812411312
domInteractive1093332451113237
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect281793113245
firstReactRender27225372851
getState62669517
initialActions30748210
loadScripts1168102213987612241295
setupStore10321722726
WebpackHomeuiStartup16851410220015617692045
load14301189181013015231705
domContentLoaded14301188180913015221704
domInteractive1143332859110289
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect322195103643
firstReactRender62477766674
getState9313617825
initialActions5111614416
loadScripts14061167178713014991680
setupStore1254781327
Benchmark value 1240 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1089 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1083 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 240 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 24 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 850 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1378 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1234 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1226 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1197 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 251 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 14 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 995 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2294 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1788 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1779 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 1775 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2757 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2041 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2035 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 63 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 358 exceeds gate value 334 for chrome webpack home p95 firstPaint
Benchmark value 91 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 394 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 9 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2022 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 237 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 10 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1685 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1431 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1430 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 115 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 32 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 62 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1407 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2045 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1705 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1704 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 289 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 74 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 16 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1680 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 910ms | Sum of p95 exceeds: 1343.8ms
Sum of all benchmark exceeds: 2253.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 43 Bytes (0%)
  • ui: 67 Bytes (0%)
  • common: 172 Bytes (0%)

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 608d7ba | Date: 8/28/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.29s (±125ms) 🟡 | historical mean value: 1.28s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 982ms (±121ms) 🟢 | historical mean value: 965ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 100ms (±76ms) 🟢 | historical mean value: 89ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.29s 125ms 1.24s 1.85s 1.66s 1.85s
domContentLoaded 982ms 121ms 935ms 1.53s 1.24s 1.53s
firstPaint 100ms 76ms 68ms 624ms 268ms 624ms
firstContentfulPaint 100ms 76ms 68ms 624ms 268ms 624ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5d5a50d]
UI Startup Metrics (1200 ± 66 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1200106613436612481312
load105394912075911021139
domContentLoaded104693712005910951131
domInteractive17134161638
firstPaint642130119342210681128
backgroundConnect2382242546241249
firstReactRender23174052435
getState12580101322
initialActions30264311
loadScripts81570397058861900
setupStore85273913
WebpackHomeuiStartup21381624261420622512474
load16571247193515917491866
domContentLoaded16501242191715817441849
domInteractive1712135151441
firstPaint1616141864182290
backgroundConnect2813300292650
firstReactRender19288395101181389
getState2543106311265
initialActions5225368
loadScripts16461240190415717421838
setupStore216295511328
FirefoxBrowserifyHomeuiStartup13161139177111913461591
load1154101513947211981287
domContentLoaded1154101513937211971287
domInteractive1043334149109222
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3218171193371
firstReactRender27225662945
getState62426517
initialActions3088928
loadScripts113199813626911731260
setupStore11321424729
WebpackHomeuiStartup15621363204715216451886
load13291158169812314221561
domContentLoaded13281157169712314221560
domInteractive1063329950112248
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3020214203346
firstReactRender57427666168
getState8212414726
initialActions4011712316
loadScripts13051138166311914021522
setupStore105130141020
Benchmark value 239 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 250 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 2474 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 389 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 265 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 8 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 32 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 222 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 71 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 8 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 29 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 106 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 58 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 248 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 68 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 16 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 280ms | Sum of p95 exceeds: 511.8ms
Sum of all benchmark exceeds: 791.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.81 KiB (0.04%)
  • ui: 1.04 KiB (0.01%)
  • common: 1.96 KiB (0.03%)

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 5d5a50d to 4820010 Compare August 28, 2025 15:02
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 6c845f0 | Date: 8/28/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.29s (±73ms) 🟡 | historical mean value: 1.30s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 970ms (±66ms) 🟢 | historical mean value: 987ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 85ms (±21ms) 🟢 | historical mean value: 102ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.29s 73ms 1.25s 1.87s 1.33s 1.87s
domContentLoaded 970ms 66ms 941ms 1.48s 999ms 1.48s
firstPaint 85ms 21ms 68ms 264ms 112ms 264ms
firstContentfulPaint 85ms 21ms 68ms 264ms 112ms 264ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [4820010]
UI Startup Metrics (1194 ± 66 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1194107215716612281269
load104690713856810831132
domContentLoaded103990213676810771125
domInteractive17133951736
firstPaint690163139441110551108
backgroundConnect2382262708242257
firstReactRender2716139182748
getState1154961421
initialActions30244413
loadScripts807669111267848893
setupStore94304919
WebpackHomeuiStartup21161600257423122132504
load16451231190217517451863
domContentLoaded16391227189417417411857
domInteractive161271101441
firstPaint1707039965207314
backgroundConnect2914290282751
firstReactRender1888839096184385
getState3143027111268
initialActions5228458
loadScripts16351224189217317371844
setupStore186300391426
FirefoxBrowserifyHomeuiStartup14051173186313514641718
load1233105015379312871398
domContentLoaded1233105015379312861398
domInteractive1143434055120263
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3418179233491
firstReactRender27234742835
getState9217019632
initialActions30446210
loadScripts1207103315128612551371
setupStore9318819725
WebpackHomeuiStartup16881431218215417472004
load14421229185913615101711
domContentLoaded14421229185913615101711
domInteractive1254846170119296
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31224963544
firstReactRender63518376679
getState8311612723
initialActions41395414
loadScripts14191206183313614891686
setupStore1054161024
Benchmark value 239 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 257 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 48 exceeds gate value 45 for chrome browserify home p95 firstReactRender
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 19 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 31 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2505 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 385 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 268 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 8 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1406 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 115 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 35 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1718 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 263 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 91 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 32 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 10 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1688 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1443 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1442 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 126 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 32 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 63 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1419 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2004 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1711 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1711 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 296 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 79 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 14 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1686 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 578ms | Sum of p95 exceeds: 966.8ms
Sum of all benchmark exceeds: 1544.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.81 KiB (0.04%)
  • ui: 3.51 KiB (0.05%)
  • common: 1.96 KiB (0.03%)

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch 2 times, most recently from 7e3b9fc to a6e0aae Compare August 28, 2025 15:44
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 77f06fa | Date: 8/28/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.29s (±123ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 984ms (±123ms) 🟢 | historical mean value: 991ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 110ms (±139ms) 🟢 | historical mean value: 100ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.29s 123ms 1.24s 1.95s 1.54s 1.95s
domContentLoaded 984ms 123ms 931ms 1.63s 1.27s 1.63s
firstPaint 110ms 139ms 72ms 1.34s 264ms 1.34s
firstContentfulPaint 110ms 139ms 72ms 1.34s 264ms 1.34s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [a6e0aae]
UI Startup Metrics (1207 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1207107613476412501309
load106394411866011081160
domContentLoaded105694011816111031153
domInteractive18134561738
firstPaint58578116942710641134
backgroundConnect2362242708240251
firstReactRender23164562436
getState1053151220
initialActions30415310
loadScripts82671695959873918
setupStore85243815
WebpackHomeuiStartup21991649270024523612597
load16951282200918918171924
domContentLoaded16881277199818818121919
domInteractive171274111547
firstPaint1736740068204292
backgroundConnect291767112958
firstReactRender1939341088189393
getState3342847411267
initialActions52183610
loadScripts16831274198418718101913
setupStore2662995816238
FirefoxBrowserifyHomeuiStartup13271152166110813831562
load1173101814359112361378
domContentLoaded1173101814359112361378
domInteractive1113227051121237
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3017113143262
firstReactRender27215762845
getState62447517
initialActions30679213
loadScripts115199814098712131318
setupStore73426723
WebpackHomeuiStartup16181391197214817021918
load13821179172912914661653
domContentLoaded13821179172912914661652
domInteractive1093329253111260
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect29215063341
firstReactRender61448066670
getState62255617
initialActions40304313
loadScripts13601155171012914491621
setupStore10412013922
Benchmark value 237 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 252 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 10 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 2200 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 33 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2597 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 393 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 267 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 10 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 238 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 111 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 30 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 237 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 13 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1619 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1383 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1382 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 109 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 30 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 61 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1361 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 260 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 70 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 13 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 301ms | Sum of p95 exceeds: 844.8ms
Sum of all benchmark exceeds: 1145.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 43 Bytes (0%)
  • ui: 67 Bytes (0%)
  • common: 172 Bytes (0%)

@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from a6e0aae to 68dca86 Compare September 12, 2025 15:56
Gudahtt added a commit that referenced this pull request Sep 12, 2025
Add a new test workflow for E2E tests using `dist` builds. Currently
this workflow has just one test suite in it, the vault decryption test.
More will be added in later PRs.

This was split out from #31435
Gudahtt added a commit that referenced this pull request Sep 12, 2025
Add a new test workflow for E2E tests using `dist` builds. Currently
this workflow has just one test suite in it, the vault decryption test.
More will be added in later PRs.

This was split out from #31435
Gudahtt added a commit that referenced this pull request Sep 12, 2025
Add a new test workflow for E2E tests using `dist` builds. Currently
this workflow has just one test suite in it, the vault decryption test.
More will be added in later PRs.

This was split out from #31435
github-merge-queue bot pushed a commit that referenced this pull request Sep 20, 2025
## **Description**

The script responsible for determining how to split up tests in a given
workflow was failing when I tried to add a new workflow. It didn't seem
to handle the case where a workflow had zero past runs.

It has been updated to use a naive fallback splitting algorithm in this
case.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/35905?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

This fixes a CI bug encountered on #31435

## **Manual testing steps**

See this PR for an example of the failures:
#35906

See here for a rebased version of that PR on this branch, which works:
#35913

## **Screenshots/Recordings**

N/A

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [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](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
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.

---------

Co-authored-by: Howard Braham <howrad@gmail.com>
Add E2E test to ensure a window opens upon first install.

This test needs to use a production-like build rather than a standard E2E
build, so the existing "vault decryptor" job was repurposed to be more
generically for E2E tests using a production-like build.

A global function `reloadExtension` is added to `stateHooks` for use by this
test. This function had to be enabled for production builds because the test
uses a production build.
@Gudahtt Gudahtt force-pushed the first-time-install-e2e-test branch from 68dca86 to 690ca8f Compare October 17, 2025 17:50
Gudahtt added a commit that referenced this pull request Oct 17, 2025
Add a new test workflow for E2E tests using `dist` builds. Currently
this workflow has just one test suite in it, the vault decryption test.
More will be added in later PRs.

This was split out from #31435
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 690ca8f | Date: 10/17/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±72ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 732ms (±70ms) 🟢 | historical mean value: 737ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 72ms 996ms 1.32s 1.29s 1.32s
domContentLoaded 732ms 70ms 696ms 1.02s 967ms 1.02s
firstPaint 77ms 12ms 60ms 172ms 92ms 172ms
firstContentfulPaint 77ms 12ms 60ms 172ms 92ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [690ca8f]
UI Startup Metrics (1249 ± 74 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1249112014217413041380
load107695812546611261192
domContentLoaded107095312486611201186
domInteractive1814121121737
firstPaint63475126143610841182
backgroundConnect2522393008255265
firstReactRender25185062741
getState16596112032
initialActions50224615
loadScripts823717100064870936
setupStore952431015
WebpackHomeuiStartup815701109368831947
load61957193069624777
domContentLoaded61156691968618768
domInteractive15114871335
firstPaint21255922192192583
backgroundConnect21104862432
firstReactRender26165983136
getState932331113
initialActions209236
loadScripts60856490865616757
setupStore1062031113
FirefoxBrowserifyHomeuiStartup13981208185110114381567
load1196104813647212441329
domContentLoaded1195104713647212441329
domInteractive1053433147109231
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3422133163645
firstReactRender24204542533
getState84396816
initialActions6119220315
loadScripts1173102913476912201305
setupStore95335923
WebpackHomeuiStartup15471335190410516161725
load1339114815569013881499
domContentLoaded1338114815559013881499
domInteractive983431944107193
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect32206983846
firstReactRender27207192941
getState85355814
initialActions511251345
loadScripts1317113315288813631473
setupStore12685121049
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 67 Bytes (0%)
  • common: 172 Bytes (0%)

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants