Skip to content

test: Migrate json-rpc e2e tests to Page object modal (part 2) #34048

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

chloeYue
Copy link
Contributor

@chloeYue chloeYue commented Jul 3, 2025

Description

Migrate following json-rpc e2e specs to follow Page object modal.

test/e2e/json-rpc/switchEthereumChain.spec.js

The original test file was too long (500+ lines), causing the Check PR Max Lines job always fail. However, this should not block the merge. I also split the file into two separate spec files.

Open in GitHub Codespaces

Related issues

Fixes:
https://consensyssoftware.atlassian.net/browse/MMQA-329

Manual testing steps

Tests should pass and be robust

Screenshots/Recordings

Before

After

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.

@chloeYue chloeYue requested a review from a team July 3, 2025 09:51
@chloeYue chloeYue self-assigned this Jul 3, 2025
@chloeYue chloeYue added e2e-test End to end test for the MetaMask extension team-qa QA team no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed labels Jul 3, 2025
@chloeYue chloeYue marked this pull request as draft July 3, 2025 09:52
Copy link
Contributor

github-actions bot commented Jul 3, 2025

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

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

Builds ready [200ec7b]
UI Startup Metrics (1174 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1174103015136312071259
load100289213265710291075
domContentLoaded99688713215710221069
domInteractive18135071739
firstPaint64180114940110131068
backgroundConnect74162811
firstReactRender21163432230
getState1565582229
initialActions001001
loadScripts791692111656814858
setupStore85253916
WebpackHomeuiStartup22181766275123423572699
load16701243205018917932015
domContentLoaded16641239203418817882003
domInteractive181278141458
firstPaint1616244267171321
backgroundConnect2612286272548
firstReactRender25689419119382406
getState14484111537
initialActions218136
loadScripts16611238202318617851992
setupStore208317312142
FirefoxBrowserifyHomeuiStartup14471263211314814901794
load1257109417099813121454
domContentLoaded1257109417099813111454
domInteractive1213566772137194
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2613146222383
firstReactRender26223932632
getState14419426951
initialActions002001
loadScripts1236107616869612901430
setupStore154342401077
WebpackHomeuiStartup16821425247920517742070
load14481230205116615431777
domContentLoaded14481229205116615431777
domInteractive1053453071102297
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2715231232753
firstReactRender43345644549
getState154169241143
initialActions002111
loadScripts14241207203016015211744
setupStore1268814934
Benchmark value 16 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 2218 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 257 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 2699 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 59 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 406 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 1992 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1447 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1257 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1257 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 122 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 14 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 1237 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 16 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1794 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 83 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 51 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 77 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1682 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1448 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1448 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 105 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 27 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 44 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 1424 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2070 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1777 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1777 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 297 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 53 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 43 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 1744 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 34 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 432ms | Sum of p95 exceeds: 1174ms
Sum of all benchmark exceeds: 1606ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 33 Bytes (0%)
  • ui: 155 Bytes (0%)
  • common: 15 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [0c29fd1]
UI Startup Metrics (1166 ± 54 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1166107513705412031259
load99691311535110331075
domContentLoaded98990311435010261070
domInteractive17135561740
firstPaint719143115437710271056
backgroundConnect84193913
firstReactRender23174352534
getState1564282132
initialActions001001
loadScripts78569893149820854
setupStore95264917
WebpackHomeuiStartup22681781275019523702709
load17091318206616317972026
domContentLoaded17021314205016217872012
domInteractive181286151461
firstPaint1526542660167261
backgroundConnect23134782840
firstReactRender26394426116383410
getState154231231729
initialActions512652634
loadScripts16991312203916017842001
setupStore19763102444
FirefoxBrowserifyHomeuiStartup13881219203912514541660
load1213108516589512581396
domContentLoaded1212108416579512581395
domInteractive1243668488129313
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect231494142362
firstReactRender26225452733
getState125201221022
initialActions001001
loadScripts1192107016429512341380
setupStore13418427863
WebpackHomeuiStartup16541398271622017592088
load14231201200116315251701
domContentLoaded14221201200116315251701
domInteractive108354787598304
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2916477462644
firstReactRender42345544448
getState175301321142
initialActions102111
loadScripts13971183198015715031676
setupStore14527529934
Benchmark value 2269 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 263 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 1700 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2710 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2012 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 62 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 410 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 2001 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 125 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 12 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 13 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 313 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 63 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1655 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1423 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1423 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 108 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 29 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 17 exceeds gate value 15 for firefox webpack home mean getState
Benchmark value 1397 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 15 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2088 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1701 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1701 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 42 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 1676 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 34 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 309ms | Sum of p95 exceeds: 938ms
Sum of all benchmark exceeds: 1247ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 33 Bytes (0%)
  • ui: 155 Bytes (0%)
  • common: 15 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [327a7f6]
UI Startup Metrics (1202 ± 58 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1202109013775812361309
load102288412035910591110
domContentLoaded101587911975810531105
domInteractive18145871741
firstPaint74497120338710461103
backgroundConnect84304920
firstReactRender2616171172543
getState1564582127
initialActions001001
loadScripts80667498257841897
setupStore1053051021
WebpackHomeuiStartup22331701282919823092650
load16931231215716417801974
domContentLoaded16871226214716217751956
domInteractive2012224241460
firstPaint178661631161182340
backgroundConnect22136292440
firstReactRender24988433112381398
getState13570101532
initialActions218135
loadScripts16841219213516117741945
setupStore197268262032
FirefoxBrowserifyHomeuiStartup13961227191214114391706
load1213105314638712661373
domContentLoaded1213105314638712661373
domInteractive1273639576131345
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2312108132448
firstReactRender25205352532
getState13521324951
initialActions001001
loadScripts1195104014438612511358
setupStore174380441079
WebpackHomeuiStartup16141375217719517142031
load13821181185415415011634
domContentLoaded13821181185415415011633
domInteractive102313546494277
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect241588122544
firstReactRender42305444448
getState186235282039
initialActions101011
loadScripts13591164182515314711616
setupStore11510312932
Benchmark value 27 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 16 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 42 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 20 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 21 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2233 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 250 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 2650 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 60 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 340 exceeds gate value 334 for chrome webpack home p95 firstPaint
Benchmark value 398 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 128 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 14 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 17 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1706 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 345 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 51 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 79 exceeds gate value 27 for firefox browserify home p95 setupStore
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 103 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 18 exceeds gate value 15 for firefox webpack home mean getState
Benchmark value 2031 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 277 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 39 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 32 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 106ms | Sum of p95 exceeds: 743ms
Sum of all benchmark exceeds: 849ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 33 Bytes (0%)
  • ui: 155 Bytes (0%)
  • common: 176 Bytes (0%)

@chloeYue chloeYue changed the title test: migrate tests test: Migrate json-rpc e2e tests to Page object modal (part 2) Jul 3, 2025
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jul 3, 2025
@chloeYue chloeYue removed the INVALID-PR-TEMPLATE PR's body doesn't match template label Jul 3, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [1a26e1c]
UI Startup Metrics (1191 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1191109015316312261296
load100987413786310411089
domContentLoaded100286813696310331082
domInteractive18146671734
firstPaint639135137640410161083
backgroundConnect84324812
firstReactRender2416172172234
getState17668102331
initialActions001001
loadScripts796663114361826876
setupStore95274918
WebpackHomeuiStartup23541752304020024522670
load18021328234417919042090
domContentLoaded17951324233417818962079
domInteractive191295161564
firstPaint1686576789192309
backgroundConnect2711295293045
firstReactRender23590424106358403
getState14478121738
initialActions512582535
loadScripts17921322232917718872068
setupStore278299452456
FirefoxBrowserifyHomeuiStartup14091212221615014751700
load12371069207113112911405
domContentLoaded12371069207013112911405
domInteractive1253551382130316
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2413116152451
firstReactRender25226162632
getState1058210930
initialActions002001
loadScripts12161041204913012751387
setupStore14435237855
WebpackHomeuiStartup16551391260321217432055
load14201197201914515201625
domContentLoaded14191197201814515191625
domInteractive105354957296285
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2415117152343
firstReactRender43335544548
getState185373431046
initialActions001011
loadScripts13981178198614415011592
setupStore13524326938
Benchmark value 24 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 17 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 18 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2355 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1803 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1796 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 236 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 1793 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2670 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2091 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2080 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 65 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 403 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 2069 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1410 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 126 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 14 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1700 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 316 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 30 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 55 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1655 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1420 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1420 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 105 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 19 exceeds gate value 15 for firefox webpack home mean getState
Benchmark value 1398 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2055 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 285 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 46 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 38 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 644ms | Sum of p95 exceeds: 961ms
Sum of all benchmark exceeds: 1605ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 33 Bytes (0%)
  • ui: 155 Bytes (0%)
  • common: 176 Bytes (0%)

@chloeYue chloeYue marked this pull request as ready for review July 3, 2025 12:53
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Optional Chaining Masks Test Errors

The change from this.test.fullTitle() to this.test?.fullTitle() in Mocha test contexts masks potential test setup issues. If this.test is undefined, optional chaining silently returns undefined for the title instead of throwing an error, which could hide legitimate problems or lead to unexpected test framework behavior.

test/e2e/json-rpc/switchEthereumChain.spec.ts#L45-L46

],
title: this.test?.fullTitle(),

test/e2e/json-rpc/switchEthereumChain.spec.ts#L120-L121

],
title: this.test?.fullTitle(),

test/e2e/json-rpc/switchEthereumChain.spec.ts#L248-L249

],
title: this.test?.fullTitle(),

test/e2e/json-rpc/switchEthereumChain_pendingConfirmation.spec.ts#L35-L36

test/e2e/json-rpc/switchEthereumChain_pendingConfirmation.spec.ts#L116-L117

Fix in Cursor


Bug: Race Condition in Dialog Switching

The method clickFooterConfirmButtonAndAndWaitForWindowToClose() contains a duplicate "And" in its name, which will cause a runtime error. Additionally, even if this typo is corrected, the test immediately attempts to switch to a new dialog after closing the previous one, without a sufficient delay for the new dialog to appear, leading to a race condition.

test/e2e/json-rpc/switchEthereumChain.spec.ts#L207-L211

await confirmation.check_pageIsLoaded();
await confirmation.clickFooterConfirmButtonAndAndWaitForWindowToClose();
// Switch and confirm to queued notification for switchEthereumChain
await driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog);

Fix in Cursor


Was this report helpful? Give feedback by reacting with 👍 or 👎

@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jul 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
e2e-test End to end test for the MetaMask extension INVALID-PR-TEMPLATE PR's body doesn't match template no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed team-qa QA team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants