Skip to content
Merged
Show file tree
Hide file tree
Changes from 97 commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
b3c6d7a
test: bootstrap @metamask/connect tests
christopherferreira9 Oct 23, 2025
a9e2714
test: adds disclaimer
christopherferreira9 Oct 23, 2025
656d2f4
test: adds initial boilerplate to navigate to url
christopherferreira9 Oct 27, 2025
6a53d0e
test: adds more screen objects
christopherferreira9 Oct 27, 2025
5068730
fix import path in mobileBrowser.js file
cortisiko Oct 28, 2025
e4583f0
test: upadtes the mm connect test
christopherferreira9 Oct 28, 2025
11f9e9b
test: final test boilerplate
christopherferreira9 Oct 28, 2025
4d25abc
fix rewards tag
cortisiko Oct 28, 2025
299e18a
Revert "fix rewards tag"
cortisiko Oct 28, 2025
a813317
test: fix boilerplate
christopherferreira9 Oct 28, 2025
1f6966d
test: fix boilerplate
christopherferreira9 Oct 28, 2025
f3a814b
use updated multichain test dapp
jiexi Oct 30, 2025
88d0150
WIP
jiexi Nov 4, 2025
1c9bfac
Merge branch 'main' into jl/fix-backgroundbridge-accountsChanged-MMC
jiexi Nov 4, 2025
6bb6b85
fix: subscribe to AccountsControllerSelected account change with send…
ffmcgee725 Nov 5, 2025
a7a6cfb
remove logs
jiexi Nov 6, 2025
fe47584
remove logs 2
jiexi Nov 6, 2025
a215806
Merge branch 'jl/fix-backgroundbridge-accountsChanged-MMC' into jl/mm…
jiexi Nov 7, 2025
55b0b84
WIP
jiexi Nov 7, 2025
d57bc6b
WIP
jiexi Nov 7, 2025
942f9ed
WIP
jiexi Nov 7, 2025
b0c4922
WIP
jiexi Nov 10, 2025
d047fc7
Fix port
jiexi Nov 10, 2025
e85e0e9
stop pressing teminate button again
jiexi Nov 10, 2025
499bf03
test: adds the ability to switchContext to webview
christopherferreira9 Nov 11, 2025
8f86c58
Merge remote-tracking branch 'origin/christopher/allow-appium-context…
jiexi Nov 11, 2025
750d57c
attempt to use webview context
jiexi Nov 11, 2025
e74317a
Merge branch 'main' into bootstrap-mm-connect-e2e
jiexi Nov 11, 2025
b8ded40
fix bad merge
jiexi Nov 11, 2025
53cdb29
Merge branch 'bootstrap-mm-connect-e2e' into jl/mm-connect-e2e-multic…
jiexi Nov 11, 2025
36655f0
Manually click connect modal button. Add exact getElementByText. Fix …
jiexi Nov 11, 2025
2bf2d97
test: improves context switch; adds helper functions; adds missing ap…
christopherferreira9 Nov 12, 2025
e9fec7b
Add personal sign
jiexi Nov 12, 2025
6dcfb5f
lavamoat
jiexi Nov 12, 2025
97f9c08
add sendTransaction
jiexi Nov 12, 2025
b72973b
Switch polygon. Assert chainChanged. Assert sendTransaction network
jiexi Nov 12, 2025
bd71743
Add local switch back to mainnet
jiexi Nov 12, 2025
a81a4e5
Connect account 3 and assert
jiexi Nov 12, 2025
47384c1
Add account 3 permit and accountsChanged
jiexi Nov 12, 2025
34b1d7c
use element instead of coords
jiexi Nov 13, 2025
73fdcc3
add chrome refresh
jiexi Nov 13, 2025
ac94c35
add driver updateSettings
jiexi Nov 13, 2025
7711f17
Add terminate + reconnect and readonly
jiexi Nov 13, 2025
c46593f
fix require error
jiexi Nov 18, 2025
109d645
tap chrome url by line number
jiexi Nov 18, 2025
1f470c0
add dismissAddAccountModal. Reenable modal dismissing
jiexi Nov 18, 2025
4d4899c
WIP browserstack
jiexi Nov 18, 2025
91f5e5b
replace SwitchChainModal coordinates with element
jiexi Nov 18, 2025
0ec6ac1
Merge branch 'main' into bootstrap-mm-connect-e2e
jiexi Jan 5, 2026
d4d9377
Merge branch 'main' into bootstrap-mm-connect-e2e
jiexi Jan 5, 2026
88762e1
Merge branch 'bootstrap-mm-connect-e2e' into jl/mm-connect-e2e-multic…
jiexi Jan 5, 2026
e88ef25
Fix bad merge
jiexi Jan 5, 2026
0094d72
Fix appwright using different version of playwright
jiexi Jan 5, 2026
458f675
Fix appwright using different version of playwright
jiexi Jan 5, 2026
0488a31
WIP Wagmi e2e
jiexi Jan 6, 2026
c05fc5b
Merge branch 'main' into bootstrap-mm-connect-e2e
jiexi Jan 6, 2026
c0d5255
Merge branch 'bootstrap-mm-connect-e2e' into jl/mm-connect-e2e-multic…
jiexi Jan 6, 2026
bc35cf4
Merge remote-tracking branch 'origin/jl/mm-connect-e2e-multichain-tes…
jiexi Jan 6, 2026
8863dee
Fix first connect assertions
jiexi Jan 6, 2026
56de948
add personal sign
jiexi Jan 6, 2026
86cd581
Add add/switch chain flows
jiexi Jan 6, 2026
7601d0a
verify Celo with personal sign
jiexi Jan 6, 2026
3eb24da
Add OP switch chain permit
jiexi Jan 7, 2026
20b9d44
Add disconnect reconnect
jiexi Jan 7, 2026
9ba6a97
Re-enable resume from refresh for legacy connect-evm test dapp
jiexi Jan 7, 2026
716c410
remove resume on refresh explicit connect button workaround
jiexi Jan 7, 2026
3f02bfd
add resume on refresh to wagmi
jiexi Jan 7, 2026
a5e394b
Add wagmi accounts changed
jiexi Jan 8, 2026
832ab3b
use deployed test dapps
jiexi Jan 8, 2026
0660ed9
Cleanup specs
jiexi Jan 8, 2026
717a3b6
Cleanup comments
jiexi Jan 8, 2026
ac7e3d3
delete boilerplate
jiexi Jan 8, 2026
a5e8bfd
Use account address constants
jiexi Jan 8, 2026
96b5c68
Restore appwright config
jiexi Jan 8, 2026
c52a0d7
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 9, 2026
8899965
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 9, 2026
8f7bf84
skip multichain test
jiexi Jan 9, 2026
c24cb5c
Add incomplete session to wagmi
jiexi Jan 9, 2026
5bbb370
Add incomplete session to legacy evm
jiexi Jan 9, 2026
7fd664f
remove onboarding spec
jiexi Jan 12, 2026
e36fd96
add more explicit guard for android to flows
jiexi Jan 12, 2026
f92070d
Add comment explaining rejection check
jiexi Jan 12, 2026
ac31aab
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 12, 2026
90cff1f
update podfile.lock
jiexi Jan 12, 2026
3ef31bb
yarn dedupe
jiexi Jan 12, 2026
4d24a32
depcheckrc
jiexi Jan 13, 2026
6c173e7
fix double slash in multichain url
jiexi Jan 14, 2026
e024877
fix isDappConnected not awaiting assertion
jiexi Jan 14, 2026
d911349
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 15, 2026
4a5045b
yarn dedupe
jiexi Jan 15, 2026
4681da9
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 15, 2026
1c69714
yarn
jiexi Jan 20, 2026
b3eb0a3
Merge remote-tracking branch 'origin/jl/mm-connect-e2e-multichain-tes…
jiexi Jan 20, 2026
845fd30
undo nested flows/Flow.js move
jiexi Jan 20, 2026
4e72599
Remove unneeeded spec. Unskip all specs
jiexi Jan 20, 2026
0e13bd4
restore podlock
jiexi Jan 21, 2026
76a90d2
evert "restore podlock"
jiexi Jan 21, 2026
40ac707
remove unused import
adonesky1 Jan 22, 2026
e5164a4
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 22, 2026
5766e7e
Merge remote-tracking branch 'origin/jl/mm-connect-e2e-multichain-tes…
jiexi Jan 22, 2026
837ff23
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
jiexi Jan 23, 2026
7b63562
Merge branch 'main' into jl/mm-connect-e2e-multichain-test-dapp
adonesky1 Jan 23, 2026
a9c0340
fix incorrect import paths
adonesky1 Jan 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .depcheckrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ ignores:
# Appwright will be used in a follow up PR. We will remove once PR is ready
- 'appwright'
# Appium drivers are used by Appwright for mobile automation
- 'appium-adb'
- 'appium-chromium-driver'
- 'appium-uiautomator2-driver'
- 'appium-xcuitest-driver'
# ESBuild is used for AI E2E script compilation
Expand Down
52 changes: 52 additions & 0 deletions .yarn/patches/appwright-patch-55afb81fc2.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
diff --git a/dist/providers/appium.js b/dist/providers/appium.js
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can you explain this patch is necessary and whether we have plans to upstream the change?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Replied here: https://github.com/MetaMask/metamask-mobile/pull/21978/files#r2674127734
The plan is to fully deprecate appwright (and the respective patches) for the in-house solution where the changes from this patch have already been applied.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👍 I have to say something about the latest github update is making it very hard to see all the comments and follow what has already been addressed/resolved

index 2d8e8924124b882d44ab0aa11fede4d4094b7a65..56f8e4e5d4b3863a903935512be14d224aa854a1 100644
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why do we need this patch ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Fixes an issue where the appropriate web driver isn't automatically downloaded if not already installed on your machine

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@christopherferreira9 do we need to keep this around?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Yes otherwise switching between web and native context will not be possible

--- a/dist/providers/appium.js
+++ b/dist/providers/appium.js
@@ -43,7 +43,7 @@ async function installDriver(driverName) {
async function startAppiumServer(provider) {
let emulatorStartRequested = false;
return new Promise((resolve, reject) => {
- const appiumProcess = (0, child_process_1.spawn)("npx", ["appium"], {
+ const appiumProcess = (0, child_process_1.spawn)("npx", ["appium", "--allow-insecure=chromedriver_autodownload"], {
stdio: "pipe",
});
appiumProcess.stderr.on("data", async (data) => {
diff --git a/dist/providers/browserstack/index.js b/dist/providers/browserstack/index.js
index 61ecd1508400f59302d6139a805e7a912e9a1036..09bf83155b64b4bcf86ce8684efe36e0f9923adb 100644
--- a/dist/providers/browserstack/index.js
+++ b/dist/providers/browserstack/index.js
@@ -275,6 +275,8 @@ class BrowserStackDeviceProvider {
"appium:settings[actionAcknowledgmentTimeout]": 3000,
"appium:settings[ignoreUnimportantViews]": true,
"appium:settings[waitForSelectorTimeout]": 10000,
+ "appium:includeSafariInWebviews": true,
+ "appium:chromedriverAutodownload": true,
},
};
}
diff --git a/dist/providers/emulator/index.js b/dist/providers/emulator/index.js
index f3bc1502e7aa9d59b99a915adcbba5e13928e413..cd23dbfde74274fa90d664cadc4b60c8ceee8d74 100644
--- a/dist/providers/emulator/index.js
+++ b/dist/providers/emulator/index.js
@@ -77,6 +77,8 @@ Follow the steps mentioned in ${androidSimulatorConfigDocLink} to run test on An
"appium:deviceOrientation": this.project.use.device?.orientation,
"appium:settings[snapshotMaxDepth]": 62,
"appium:wdaLaunchTimeout": 300_000,
+ "appium:includeSafariInWebviews": true,
+ "appium:chromedriverAutodownload": true,
},
};
}
diff --git a/dist/providers/local/index.js b/dist/providers/local/index.js
index dc394b0696dd67d259a03856c5b49dcb5820d0ad..38c9b1fcc7ec5b4256831be0bedca1bc712dc528 100644
--- a/dist/providers/local/index.js
+++ b/dist/providers/local/index.js
@@ -79,6 +79,8 @@ To specify a device, use the udid property. Run "adb devices" to get the UDID fo
"appium:fullReset": true,
"appium:deviceOrientation": this.project.use.device?.orientation,
"appium:settings[snapshotMaxDepth]": 62,
+ "appium:includeSafariInWebviews": true,
+ "appium:chromedriverAutodownload": true,
},
};
}
12 changes: 6 additions & 6 deletions appwright/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ Common user flows are in `utils/Flows.js`:
Standard login flow with optional modal dismissal:

```javascript
import { login } from '../../../utils/Flows.js';
import { login } from '../../../utils/flows/Flows.js';

// Simple login
await login(device);
Expand All @@ -346,7 +346,7 @@ await login(device, { scenarioType: 'onboarding' });
Complete onboarding flow for importing a wallet:

```javascript
import { onboardingFlowImportSRP } from '../../../utils/Flows.js';
import { onboardingFlowImportSRP } from '../../../utils/flows/Flows.js';

await onboardingFlowImportSRP(device, process.env.TEST_SRP);
```
Expand All @@ -356,7 +356,7 @@ await onboardingFlowImportSRP(device, process.env.TEST_SRP);
Import additional SRP for logged-in user. Returns array of timers:

```javascript
import { importSRPFlow } from '../../../utils/Flows.js';
import { importSRPFlow } from '../../../utils/flows/Flows.js';

const timers = await importSRPFlow(device, process.env.TEST_SRP_2);
performanceTracker.addTimers(...timers);
Expand All @@ -367,7 +367,7 @@ performanceTracker.addTimers(...timers);
Dismiss common modals (Multichain, Predictions, etc.):

```javascript
import { dissmissAllModals } from '../../../utils/Flows.js';
import { dissmissAllModals } from '../../../utils/flows/Flows.js';

await dissmissAllModals(device);
```
Expand All @@ -377,7 +377,7 @@ await dissmissAllModals(device);
Select account based on device for parallel testing:

```javascript
import { selectAccountDevice } from '../../../utils/Flows.js';
import { selectAccountDevice } from '../../../utils/flows/Flows.js';

await selectAccountDevice(device, testInfo);
```
Expand Down Expand Up @@ -534,7 +534,7 @@ The aggregated HTML report (`performance-report.html`) includes:
import { test } from '../../../fixtures/performance-test.js';
import TimerHelper from '../../../utils/TimersHelper.js';
import WalletMainScreen from '../../../../wdio/screen-objects/WalletMainScreen.js';
import { login, dissmissAllModals } from '../../../utils/Flows.js';
import { login, dissmissAllModals } from '../../../utils/flows/Flows.js';

test('My Performance Test', async ({
device,
Expand Down
Loading
Loading