@marigoldlabs/web3-tester 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/real-wallet-setup.d.ts +4 -0
- package/dist/real-wallet-setup.d.ts.map +1 -0
- package/dist/real-wallet-setup.js +5 -0
- package/dist/real-wallet-setup.js.map +1 -0
- package/dist/real-wallet.d.ts +1 -1
- package/dist/real-wallet.d.ts.map +1 -1
- package/dist/real-wallet.js +377 -112
- package/dist/real-wallet.js.map +1 -1
- package/docs/API.md +3 -3
- package/examples/live-sepolia.spec.ts +1 -1
- package/examples/local-wallet.spec.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ const wallet = await launchRealWallet({
|
|
|
63
63
|
expectedAddress: process.env.FJORD_REAL_WALLET_ADDRESS,
|
|
64
64
|
extensionPath: process.env.FJORD_REAL_WALLET_EXTENSION_PATH as string,
|
|
65
65
|
profileDir: process.env.FJORD_REAL_WALLET_PROFILE_DIR as string,
|
|
66
|
-
setup: process.env.FJORD_REAL_WALLET_PASSWORD
|
|
66
|
+
setup: process.env.FJORD_REAL_WALLET_PASSWORD || process.env.FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE
|
|
67
67
|
? {
|
|
68
68
|
password: process.env.FJORD_REAL_WALLET_PASSWORD,
|
|
69
69
|
seedPhrase: process.env.FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE,
|
|
@@ -135,8 +135,8 @@ Copy `.env.example` for local reference. Do not commit real private keys.
|
|
|
135
135
|
| `FJORD_REAL_WALLET_EXTENSION_PATH` | unset | Path to the unpacked MetaMask extension for real-wallet tests. |
|
|
136
136
|
| `FJORD_REAL_WALLET_PROFILE_DIR` | unset | Persistent Chromium user-data directory, or a Chrome profile directory such as `Profile 1`. |
|
|
137
137
|
| `FJORD_REAL_WALLET_ADDRESS` | unset | Optional expected account address checked after unlock/import. |
|
|
138
|
-
| `FJORD_REAL_WALLET_PASSWORD` | unset | Optional MetaMask password used to unlock
|
|
139
|
-
| `FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE` | unset | Optional seed phrase used
|
|
138
|
+
| `FJORD_REAL_WALLET_PASSWORD` | unset | Optional MetaMask password used to unlock the profile. When importing from a seed without a password, web3-tester uses a deterministic test profile password. |
|
|
139
|
+
| `FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE` | unset | Optional seed phrase used when MetaMask opens on onboarding. |
|
|
140
140
|
|
|
141
141
|
## Package Surface
|
|
142
142
|
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RealWalletSetup } from './real-wallet.js';
|
|
2
|
+
export declare const DEFAULT_WALLET_PASSWORD = "web3-tester-wallet";
|
|
3
|
+
export declare function passwordForSetup(setup: RealWalletSetup | undefined): string | undefined;
|
|
4
|
+
//# sourceMappingURL=real-wallet-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"real-wallet-setup.d.ts","sourceRoot":"","sources":["../src/real-wallet-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,sBAElE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"real-wallet-setup.js","sourceRoot":"","sources":["../src/real-wallet-setup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAAC,KAAkC;IACjE,OAAO,KAAK,EAAE,QAAQ,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACtF,CAAC"}
|
package/dist/real-wallet.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-wallet.d.ts","sourceRoot":"","sources":["../src/real-wallet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,cAAc,EAA2B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"real-wallet.d.ts","sourceRoot":"","sources":["../src/real-wallet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,cAAc,EAA2B,MAAM,kBAAkB,CAAC;AAG1F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,KAAK,GACL,QAAQ,GACR,YAAY,GACZ;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,CAAC,OAAO,CAAC,EAAE;QAC/B,UAAU,CAAC,EAAE,qBAAqB,CAAC;QACnC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,qBAAqB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sBAAsB,CAAC,OAAO,CAAC,EAAE;QAC/B,UAAU,CAAC,EAAE,qBAAqB,CAAC;QACnC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,qBAAqB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,oBAAoB,CAAC;CAC9B,CAAC;AAgBF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAW9E;AAq4BD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgDnG"}
|
package/dist/real-wallet.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { chromium } from '@playwright/test';
|
|
4
|
+
import { passwordForSetup } from './real-wallet-setup.js';
|
|
4
5
|
const DEFAULT_EXTENSION_NAME = 'MetaMask';
|
|
5
6
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
7
|
const SHORT_TIMEOUT_MS = 2_000;
|
|
8
|
+
const LOCATOR_PROBE_MS = 250;
|
|
7
9
|
const testId = (id) => `[data-testid="${id}"]`;
|
|
8
10
|
function extensionUrl(extensionId, page = 'home.html') {
|
|
9
11
|
return `chrome-extension://${extensionId}/${page}`;
|
|
@@ -29,36 +31,174 @@ async function isHidden(locator, timeout = SHORT_TIMEOUT_MS) {
|
|
|
29
31
|
await locator.first().waitFor({ state: 'hidden', timeout });
|
|
30
32
|
return true;
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
function wait(ms) {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
setTimeout(resolve, ms);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async function findVisibleLocator(locators, timeout = SHORT_TIMEOUT_MS, options = {}) {
|
|
40
|
+
const deadline = Date.now() + timeout;
|
|
41
|
+
do {
|
|
42
|
+
const remaining = Math.max(deadline - Date.now(), 1);
|
|
43
|
+
for (const locator of locators) {
|
|
44
|
+
const target = locator.first();
|
|
45
|
+
const probeTimeout = Math.min(LOCATOR_PROBE_MS, remaining);
|
|
46
|
+
if (!(await isVisible(target, probeTimeout).catch(() => false)))
|
|
47
|
+
continue;
|
|
48
|
+
if (options.requireEnabled && !(await target.isEnabled({ timeout: 0 }).catch(() => false)))
|
|
49
|
+
continue;
|
|
50
|
+
return target;
|
|
51
|
+
}
|
|
52
|
+
const delay = Math.min(LOCATOR_PROBE_MS, Math.max(deadline - Date.now(), 0));
|
|
53
|
+
if (delay > 0)
|
|
54
|
+
await wait(delay);
|
|
55
|
+
} while (Date.now() < deadline);
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
async function clickFirstVisible(locators, timeout = SHORT_TIMEOUT_MS, options = { requireEnabled: true }) {
|
|
59
|
+
const target = await findVisibleLocator(locators, timeout, {
|
|
60
|
+
requireEnabled: options.requireEnabled ?? true,
|
|
61
|
+
});
|
|
62
|
+
if (!target)
|
|
63
|
+
return false;
|
|
64
|
+
await target.click({ force: options.force, timeout });
|
|
65
|
+
return true;
|
|
41
66
|
}
|
|
42
67
|
async function fillFirstVisible(locators, value, timeout = DEFAULT_TIMEOUT_MS) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
68
|
+
const target = await findVisibleLocator(locators, timeout);
|
|
69
|
+
if (!target)
|
|
70
|
+
return false;
|
|
71
|
+
await target.fill(value);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
async function startSeedPhraseWordGrid(target, firstWord) {
|
|
75
|
+
await target.fill(firstWord);
|
|
76
|
+
await wait(250);
|
|
77
|
+
await target.press('Space');
|
|
78
|
+
}
|
|
79
|
+
function metaMaskOnboardingLocators(page) {
|
|
80
|
+
return [
|
|
81
|
+
page.locator(testId('onboarding-import-wallet')),
|
|
82
|
+
page.locator(testId('onboarding-import-with-srp-button')),
|
|
83
|
+
page.locator(testId('onboarding-create-wallet')),
|
|
84
|
+
page.locator(testId('onboarding-terms-checkbox')),
|
|
85
|
+
page.locator(testId('srp-input-import__srp-note')),
|
|
86
|
+
page.locator(testId('import-srp-confirm')),
|
|
87
|
+
page.locator(testId('create-password-new-input')),
|
|
88
|
+
page.locator(testId('create-password-confirm-input')),
|
|
89
|
+
page.getByRole('button', { name: 'I have an existing wallet' }),
|
|
90
|
+
page.getByRole('button', { name: 'Create a new wallet' }),
|
|
91
|
+
page.getByRole('button', { name: 'Import using Secret Recovery Phrase' }),
|
|
92
|
+
page.getByRole('heading', { name: 'Import a wallet' }),
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
async function isMetaMaskOnboardingVisible(page) {
|
|
96
|
+
return page.url().includes('/home.html#/onboarding') || Boolean(await findVisibleLocator(metaMaskOnboardingLocators(page), SHORT_TIMEOUT_MS));
|
|
97
|
+
}
|
|
98
|
+
function metaMaskSeedPhraseInputLocators(page) {
|
|
99
|
+
return [
|
|
100
|
+
page.locator(testId('srp-input-import__srp-note')),
|
|
101
|
+
page.locator('#first-word-input-text-area'),
|
|
102
|
+
page.locator('textarea[name="seedPhrase"]'),
|
|
103
|
+
page.locator('textarea').first(),
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
function metaMaskSeedPhraseImportLocators(page) {
|
|
107
|
+
return [
|
|
108
|
+
...metaMaskSeedPhraseInputLocators(page),
|
|
109
|
+
page.getByRole('heading', { name: 'Import a wallet' }),
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
function metaMaskSeedPhraseWordInputs(page) {
|
|
113
|
+
return page.locator('.srp-input-import__words-list input, input[id^="import-srp__srp-word-"], input[data-testid^="import-srp__srp-word-"], input[name^="srp-word-"]');
|
|
114
|
+
}
|
|
115
|
+
async function isSeedPhraseConfirmEnabled(page, timeout = SHORT_TIMEOUT_MS) {
|
|
116
|
+
return Boolean(await findVisibleLocator([page.locator(testId('import-srp-confirm'))], timeout, {
|
|
117
|
+
requireEnabled: true,
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
async function fillMetaMaskSeedPhraseWordGrid(page, words, startIndex = 0) {
|
|
121
|
+
const wordInputs = metaMaskSeedPhraseWordInputs(page);
|
|
122
|
+
for (let index = startIndex; index < words.length; index += 1) {
|
|
123
|
+
const input = wordInputs.nth(index);
|
|
124
|
+
await input.waitFor({ state: 'visible', timeout: DEFAULT_TIMEOUT_MS });
|
|
125
|
+
await input.fill(words[index]);
|
|
126
|
+
if (index < words.length - 1) {
|
|
127
|
+
await input.press('Space');
|
|
128
|
+
await wait(100);
|
|
129
|
+
}
|
|
49
130
|
}
|
|
50
|
-
|
|
131
|
+
}
|
|
132
|
+
async function isMetaMaskSeedPhraseImportVisible(page) {
|
|
133
|
+
return (page.url().includes('/onboarding/import-with-recovery-phrase') ||
|
|
134
|
+
Boolean(await findVisibleLocator(metaMaskSeedPhraseImportLocators(page), SHORT_TIMEOUT_MS)));
|
|
135
|
+
}
|
|
136
|
+
async function isMetaMaskCreatePasswordVisible(page) {
|
|
137
|
+
return (page.url().includes('/onboarding/create-password') ||
|
|
138
|
+
Boolean(await findVisibleLocator([page.locator(testId('create-password-new-input')), page.locator('input[type="password"]').nth(0)], SHORT_TIMEOUT_MS)));
|
|
51
139
|
}
|
|
52
140
|
async function waitForMetaMaskReady(page) {
|
|
53
141
|
await page.waitForLoadState('domcontentloaded', { timeout: DEFAULT_TIMEOUT_MS }).catch(() => undefined);
|
|
54
142
|
await isHidden(page.locator('.spinner, .loading-overlay, [data-testid="loading-overlay"]'), DEFAULT_TIMEOUT_MS).catch(() => undefined);
|
|
55
143
|
}
|
|
144
|
+
function metaMaskUnlockPasswordLocators(page) {
|
|
145
|
+
return [page.locator(testId('unlock-password')), page.locator('input[type="password"]').first()];
|
|
146
|
+
}
|
|
147
|
+
function metaMaskUnlockSubmitLocators(page) {
|
|
148
|
+
return [page.locator(testId('unlock-submit')), page.getByRole('button', { name: 'Unlock' })];
|
|
149
|
+
}
|
|
150
|
+
async function isMetaMaskUnlockVisible(page) {
|
|
151
|
+
return Boolean(await findVisibleLocator(metaMaskUnlockPasswordLocators(page), SHORT_TIMEOUT_MS));
|
|
152
|
+
}
|
|
56
153
|
async function closeMetaMaskOverlay(page) {
|
|
57
154
|
await clickFirstVisible([
|
|
58
155
|
page.locator(testId('popover-close')),
|
|
59
156
|
page.locator('.mm-modal-content .mm-modal-header button').first(),
|
|
60
|
-
|
|
61
|
-
|
|
157
|
+
], SHORT_TIMEOUT_MS).catch(() => false);
|
|
158
|
+
}
|
|
159
|
+
function metaMaskAccountMenuLocators(page) {
|
|
160
|
+
return [
|
|
161
|
+
page.locator(testId('account-options-menu-button')),
|
|
162
|
+
page.locator(testId('account-menu-icon')),
|
|
163
|
+
page.getByRole('button', { name: /Account options|Account menu/i }),
|
|
164
|
+
];
|
|
165
|
+
}
|
|
166
|
+
function metaMaskPromptActions(page) {
|
|
167
|
+
return [
|
|
168
|
+
page.locator(testId('onboarding-complete-done')),
|
|
169
|
+
page.locator(testId('metametrics-no-thanks')),
|
|
170
|
+
page.getByRole('button', { name: 'No thanks' }),
|
|
171
|
+
page.getByRole('button', { name: 'Done' }),
|
|
172
|
+
page.getByRole('button', { name: 'Skip' }),
|
|
173
|
+
page.getByRole('button', { name: 'Continue' }),
|
|
174
|
+
page.getByRole('button', { name: 'Open wallet' }),
|
|
175
|
+
page.getByRole('button', { name: 'Maybe later' }),
|
|
176
|
+
page.getByRole('link', { name: 'Maybe later' }),
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
function metaMaskTextPromptActions(page) {
|
|
180
|
+
return [
|
|
181
|
+
page.getByText('Maybe later', { exact: true }),
|
|
182
|
+
page.getByText('No thanks', { exact: true }),
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
async function clickMetaMaskPromptAction(page, timeout = SHORT_TIMEOUT_MS) {
|
|
186
|
+
return ((await clickFirstVisible(metaMaskPromptActions(page), timeout)) ||
|
|
187
|
+
(await clickFirstVisible(metaMaskTextPromptActions(page), timeout, { requireEnabled: false })));
|
|
188
|
+
}
|
|
189
|
+
async function waitForMetaMaskHome(page, timeout = DEFAULT_TIMEOUT_MS) {
|
|
190
|
+
const deadline = Date.now() + timeout;
|
|
191
|
+
do {
|
|
192
|
+
await waitForMetaMaskReady(page);
|
|
193
|
+
if (await findVisibleLocator(metaMaskAccountMenuLocators(page), SHORT_TIMEOUT_MS))
|
|
194
|
+
return true;
|
|
195
|
+
if (await clickMetaMaskPromptAction(page, SHORT_TIMEOUT_MS))
|
|
196
|
+
continue;
|
|
197
|
+
const delay = Math.min(LOCATOR_PROBE_MS, Math.max(deadline - Date.now(), 0));
|
|
198
|
+
if (delay > 0)
|
|
199
|
+
await wait(delay);
|
|
200
|
+
} while (Date.now() < deadline);
|
|
201
|
+
return Boolean(await findVisibleLocator(metaMaskAccountMenuLocators(page), SHORT_TIMEOUT_MS));
|
|
62
202
|
}
|
|
63
203
|
async function discoverExtensionIdFromRuntime(context) {
|
|
64
204
|
const workerId = context.serviceWorkers().map((worker) => extensionIdFromUrl(worker.url())).find(Boolean);
|
|
@@ -113,7 +253,7 @@ async function openExtensionHome(context, extensionId) {
|
|
|
113
253
|
const homeUrl = extensionUrl(extensionId);
|
|
114
254
|
const existing = context.pages().find((page) => page.url().startsWith(homeUrl));
|
|
115
255
|
const page = existing ?? (await context.newPage());
|
|
116
|
-
if (
|
|
256
|
+
if (page.url() !== homeUrl)
|
|
117
257
|
await page.goto(homeUrl);
|
|
118
258
|
await waitForMetaMaskReady(page);
|
|
119
259
|
return page;
|
|
@@ -121,35 +261,86 @@ async function openExtensionHome(context, extensionId) {
|
|
|
121
261
|
function notificationUrlPrefix(extensionId) {
|
|
122
262
|
return extensionUrl(extensionId, 'notification.html');
|
|
123
263
|
}
|
|
264
|
+
function extensionPageUrlPrefix(extensionId) {
|
|
265
|
+
return `chrome-extension://${extensionId}/`;
|
|
266
|
+
}
|
|
267
|
+
function metaMaskActionContentLocators(page) {
|
|
268
|
+
return [
|
|
269
|
+
page.getByRole('heading', {
|
|
270
|
+
name: /Spending cap request|Transaction request|Signature request|Sign-in request|Permission request/i,
|
|
271
|
+
}),
|
|
272
|
+
page.getByText(/Spending cap request|Transaction request|Signature request|Sign-in request|Permission request|This site wants permission/i),
|
|
273
|
+
];
|
|
274
|
+
}
|
|
275
|
+
function metaMaskActionControlLocators(page) {
|
|
276
|
+
return [
|
|
277
|
+
page.locator(testId('confirm-footer-button')),
|
|
278
|
+
page.locator(testId('confirmation-submit-button')),
|
|
279
|
+
page.locator(testId('page-container-footer-next')),
|
|
280
|
+
page.locator(testId('request-signature__sign')),
|
|
281
|
+
page.locator(testId('signature-sign-button')),
|
|
282
|
+
page.locator(testId('custom-spending-cap-input')),
|
|
283
|
+
page.locator('.set-approval-for-all-warning__footer__approve-button'),
|
|
284
|
+
page.getByRole('button', { name: /^(Confirm|Connect|Next|Approve|Sign)$/i }),
|
|
285
|
+
];
|
|
286
|
+
}
|
|
287
|
+
function metaMaskActionLocators(page) {
|
|
288
|
+
return [...metaMaskActionContentLocators(page), ...metaMaskActionControlLocators(page)];
|
|
289
|
+
}
|
|
290
|
+
async function findMetaMaskActionPage(context, extensionId) {
|
|
291
|
+
const extensionPrefix = extensionPageUrlPrefix(extensionId);
|
|
292
|
+
let controlOnlyPage;
|
|
293
|
+
for (const page of [...context.pages()].reverse()) {
|
|
294
|
+
if (page.isClosed() || !page.url().startsWith(extensionPrefix))
|
|
295
|
+
continue;
|
|
296
|
+
await page.waitForLoadState('domcontentloaded', { timeout: LOCATOR_PROBE_MS }).catch(() => undefined);
|
|
297
|
+
if (await findVisibleLocator(metaMaskActionContentLocators(page), LOCATOR_PROBE_MS, { requireEnabled: false })) {
|
|
298
|
+
return page;
|
|
299
|
+
}
|
|
300
|
+
if (!controlOnlyPage &&
|
|
301
|
+
(await findVisibleLocator(metaMaskActionControlLocators(page), LOCATOR_PROBE_MS, { requireEnabled: false }))) {
|
|
302
|
+
controlOnlyPage = page;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return controlOnlyPage;
|
|
306
|
+
}
|
|
307
|
+
async function findMetaMaskLockedPage(context, extensionId) {
|
|
308
|
+
const extensionPrefix = extensionPageUrlPrefix(extensionId);
|
|
309
|
+
for (const page of [...context.pages()].reverse()) {
|
|
310
|
+
if (page.isClosed() || !page.url().startsWith(extensionPrefix))
|
|
311
|
+
continue;
|
|
312
|
+
await page.waitForLoadState('domcontentloaded', { timeout: LOCATOR_PROBE_MS }).catch(() => undefined);
|
|
313
|
+
if (await isMetaMaskUnlockVisible(page))
|
|
314
|
+
return page;
|
|
315
|
+
}
|
|
316
|
+
return undefined;
|
|
317
|
+
}
|
|
318
|
+
function findMetaMaskNotificationPage(context, extensionId) {
|
|
319
|
+
const notificationPrefix = notificationUrlPrefix(extensionId);
|
|
320
|
+
return [...context.pages()]
|
|
321
|
+
.reverse()
|
|
322
|
+
.find((page) => !page.isClosed() && page.url().startsWith(notificationPrefix));
|
|
323
|
+
}
|
|
124
324
|
async function getNotificationPage(context, extensionId, timeout = DEFAULT_TIMEOUT_MS) {
|
|
125
325
|
const prefix = notificationUrlPrefix(extensionId);
|
|
326
|
+
const extensionPrefix = extensionPageUrlPrefix(extensionId);
|
|
126
327
|
const startedAt = Date.now();
|
|
127
|
-
let page = context
|
|
328
|
+
let page = await findMetaMaskActionPage(context, extensionId);
|
|
329
|
+
let notificationPage = findMetaMaskNotificationPage(context, extensionId);
|
|
128
330
|
while (!page && Date.now() - startedAt < timeout) {
|
|
129
|
-
const pendingPages = context.pages().filter((candidate) => !candidate.isClosed());
|
|
130
|
-
for (const pendingPage of pendingPages) {
|
|
131
|
-
await pendingPage
|
|
132
|
-
.waitForURL((url) => url.href.startsWith(prefix), { timeout: 250 })
|
|
133
|
-
.catch(() => undefined);
|
|
134
|
-
if (pendingPage.url().startsWith(prefix)) {
|
|
135
|
-
page = pendingPage;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (page)
|
|
140
|
-
break;
|
|
141
331
|
const remaining = Math.max(timeout - (Date.now() - startedAt), 1_000);
|
|
142
332
|
const candidate = await context.waitForEvent('page', { timeout: Math.min(remaining, 1_000) }).catch(() => undefined);
|
|
143
|
-
if (
|
|
144
|
-
|
|
145
|
-
|
|
333
|
+
if (candidate) {
|
|
334
|
+
await candidate
|
|
335
|
+
.waitForURL((url) => url.href.startsWith(prefix) || url.href.startsWith(extensionPrefix), {
|
|
336
|
+
timeout: Math.min(remaining, 5_000),
|
|
337
|
+
})
|
|
338
|
+
.catch(() => undefined);
|
|
146
339
|
}
|
|
147
|
-
await
|
|
148
|
-
|
|
149
|
-
.catch(() => undefined);
|
|
150
|
-
if (candidate.url().startsWith(prefix))
|
|
151
|
-
page = candidate;
|
|
340
|
+
page = await findMetaMaskActionPage(context, extensionId);
|
|
341
|
+
notificationPage = findMetaMaskNotificationPage(context, extensionId) ?? notificationPage;
|
|
152
342
|
}
|
|
343
|
+
page ??= notificationPage;
|
|
153
344
|
if (!page)
|
|
154
345
|
throw new Error('Timed out waiting for MetaMask notification window.');
|
|
155
346
|
await waitForMetaMaskReady(page);
|
|
@@ -159,62 +350,89 @@ async function getNotificationPage(context, extensionId, timeout = DEFAULT_TIMEO
|
|
|
159
350
|
function shortAddress(address) {
|
|
160
351
|
return `${address.slice(0, 6)}...${address.slice(-4)}`.toLowerCase();
|
|
161
352
|
}
|
|
353
|
+
async function pageContainsAddress(page, address) {
|
|
354
|
+
const normalizedAddress = address.toLowerCase();
|
|
355
|
+
const text = ((await page.locator('body').textContent({ timeout: SHORT_TIMEOUT_MS }).catch(() => '')) ?? '')
|
|
356
|
+
.replace(/\s+/g, '')
|
|
357
|
+
.toLowerCase();
|
|
358
|
+
return (text.includes(normalizedAddress) ||
|
|
359
|
+
(text.includes(normalizedAddress.slice(0, 6)) && text.includes(normalizedAddress.slice(-4))) ||
|
|
360
|
+
(text.includes(normalizedAddress.slice(0, 7)) && text.includes(normalizedAddress.slice(-5))));
|
|
361
|
+
}
|
|
162
362
|
async function fillSeedPhrase(page, seedPhrase) {
|
|
163
363
|
const words = seedPhrase.trim().split(/\s+/);
|
|
164
364
|
if (words.length < 12) {
|
|
165
365
|
throw new Error('setup.seedPhrase must contain at least 12 words.');
|
|
166
366
|
}
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
page
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
367
|
+
const singleInput = await findVisibleLocator(metaMaskSeedPhraseInputLocators(page), DEFAULT_TIMEOUT_MS);
|
|
368
|
+
if (singleInput) {
|
|
369
|
+
await startSeedPhraseWordGrid(singleInput, words[0]);
|
|
370
|
+
await fillMetaMaskSeedPhraseWordGrid(page, words, 1);
|
|
371
|
+
if (await isSeedPhraseConfirmEnabled(page)) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const wordInputs = metaMaskSeedPhraseWordInputs(page);
|
|
175
376
|
if ((await wordInputs.count()) >= words.length) {
|
|
377
|
+
await fillMetaMaskSeedPhraseWordGrid(page, words);
|
|
378
|
+
if (await isSeedPhraseConfirmEnabled(page))
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
const textboxes = page.getByRole('textbox');
|
|
382
|
+
if ((await textboxes.count()) >= words.length) {
|
|
176
383
|
for (const [index, word] of words.entries()) {
|
|
177
|
-
await
|
|
384
|
+
await textboxes.nth(index).fill(word);
|
|
178
385
|
}
|
|
179
386
|
return;
|
|
180
387
|
}
|
|
181
388
|
throw new Error('Unable to find MetaMask seed phrase input fields.');
|
|
182
389
|
}
|
|
183
390
|
async function importMetaMaskWallet(page, setup) {
|
|
184
|
-
|
|
185
|
-
|
|
391
|
+
const password = passwordForSetup(setup);
|
|
392
|
+
if (!password || !setup.seedPhrase) {
|
|
393
|
+
throw new Error('MetaMask is on onboarding. Provide setup.seedPhrase to import a wallet through web3-tester, or use a preconfigured persistent profile.');
|
|
186
394
|
}
|
|
187
395
|
await page.bringToFront().catch(() => undefined);
|
|
188
396
|
const terms = page.locator(testId('onboarding-terms-checkbox'));
|
|
189
397
|
if (await isVisible(terms, SHORT_TIMEOUT_MS).catch(() => false)) {
|
|
190
398
|
await terms.check();
|
|
191
399
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
page
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
400
|
+
if (!(await isMetaMaskSeedPhraseImportVisible(page)) && !(await isMetaMaskCreatePasswordVisible(page))) {
|
|
401
|
+
const importStarted = await clickFirstVisible([
|
|
402
|
+
page.locator(testId('onboarding-import-wallet')),
|
|
403
|
+
page.locator(testId('onboarding-import-with-srp-button')),
|
|
404
|
+
page.getByRole('button', { name: 'I have an existing wallet' }),
|
|
405
|
+
page.getByRole('button', { name: 'Import an existing wallet' }),
|
|
406
|
+
page.getByRole('button', { name: 'Import wallet' }),
|
|
407
|
+
], DEFAULT_TIMEOUT_MS);
|
|
408
|
+
if (!importStarted)
|
|
409
|
+
throw new Error('Unable to start MetaMask wallet import flow.');
|
|
410
|
+
await waitForMetaMaskReady(page);
|
|
411
|
+
await clickFirstVisible([
|
|
412
|
+
page.locator(testId('onboarding-import-with-srp-button')),
|
|
413
|
+
page.getByRole('button', { name: 'Import using Secret Recovery Phrase' }),
|
|
414
|
+
], 5_000);
|
|
415
|
+
await clickFirstVisible([
|
|
416
|
+
page.locator(testId('metametrics-no-thanks')),
|
|
417
|
+
page.locator(testId('metametrics-i-agree')),
|
|
418
|
+
page.getByRole('button', { name: 'No thanks' }),
|
|
419
|
+
page.getByRole('button', { name: 'I agree' }),
|
|
420
|
+
], SHORT_TIMEOUT_MS);
|
|
421
|
+
}
|
|
422
|
+
if (!(await isMetaMaskCreatePasswordVisible(page))) {
|
|
423
|
+
await fillSeedPhrase(page, setup.seedPhrase);
|
|
424
|
+
const seedConfirmed = await clickFirstVisible([
|
|
425
|
+
page.locator(testId('import-srp-confirm')),
|
|
426
|
+
page.getByRole('button', { name: 'Confirm Secret Recovery Phrase' }),
|
|
427
|
+
page.getByRole('button', { name: 'Confirm' }),
|
|
428
|
+
], DEFAULT_TIMEOUT_MS);
|
|
429
|
+
if (!seedConfirmed)
|
|
430
|
+
throw new Error('Unable to confirm MetaMask seed phrase import.');
|
|
431
|
+
}
|
|
432
|
+
const passwordFilled = await fillFirstVisible([page.locator(testId('create-password-new-input')), page.locator('input[type="password"]').nth(0)], password);
|
|
215
433
|
if (!passwordFilled)
|
|
216
434
|
throw new Error('Unable to find MetaMask password input.');
|
|
217
|
-
const confirmationPasswordFilled = await fillFirstVisible([page.locator(testId('create-password-confirm-input')), page.locator('input[type="password"]').nth(1)],
|
|
435
|
+
const confirmationPasswordFilled = await fillFirstVisible([page.locator(testId('create-password-confirm-input')), page.locator('input[type="password"]').nth(1)], password);
|
|
218
436
|
if (!confirmationPasswordFilled)
|
|
219
437
|
throw new Error('Unable to find MetaMask password confirmation input.');
|
|
220
438
|
const passwordTerms = page.locator(testId('create-password-terms'));
|
|
@@ -224,30 +442,58 @@ async function importMetaMaskWallet(page, setup) {
|
|
|
224
442
|
const passwordSubmitted = await clickFirstVisible([page.locator(testId('create-password-submit')), page.getByRole('button', { name: 'Import my wallet' })], DEFAULT_TIMEOUT_MS);
|
|
225
443
|
if (!passwordSubmitted)
|
|
226
444
|
throw new Error('Unable to submit MetaMask import password.');
|
|
227
|
-
await
|
|
228
|
-
page.locator(testId('onboarding-complete-done')),
|
|
229
|
-
page.getByRole('button', { name: 'Done' }),
|
|
230
|
-
page.getByRole('button', { name: 'Skip' }),
|
|
231
|
-
], DEFAULT_TIMEOUT_MS);
|
|
232
|
-
await waitForMetaMaskReady(page);
|
|
445
|
+
await finishMetaMaskOnboarding(page);
|
|
233
446
|
}
|
|
234
447
|
async function unlockMetaMask(page, password) {
|
|
235
|
-
const passwordFilled = await fillFirstVisible(
|
|
448
|
+
const passwordFilled = await fillFirstVisible(metaMaskUnlockPasswordLocators(page), password, DEFAULT_TIMEOUT_MS);
|
|
236
449
|
if (!passwordFilled)
|
|
237
450
|
throw new Error('Unable to find MetaMask unlock password input.');
|
|
238
|
-
const unlocked = await clickFirstVisible(
|
|
451
|
+
const unlocked = await clickFirstVisible(metaMaskUnlockSubmitLocators(page), DEFAULT_TIMEOUT_MS);
|
|
239
452
|
if (!unlocked)
|
|
240
453
|
throw new Error('Unable to submit MetaMask unlock form.');
|
|
241
454
|
await waitForMetaMaskReady(page);
|
|
242
455
|
}
|
|
456
|
+
async function unlockMetaMaskIfNeeded(page, password) {
|
|
457
|
+
if (!(await isMetaMaskUnlockVisible(page)))
|
|
458
|
+
return false;
|
|
459
|
+
if (!password) {
|
|
460
|
+
throw new Error('MetaMask profile is locked. Provide setup.password to unlock through web3-tester, or unlock the persistent profile before running.');
|
|
461
|
+
}
|
|
462
|
+
await page.bringToFront().catch(() => undefined);
|
|
463
|
+
await unlockMetaMask(page, password);
|
|
464
|
+
return true;
|
|
465
|
+
}
|
|
466
|
+
async function finishMetaMaskOnboarding(page) {
|
|
467
|
+
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
468
|
+
await waitForMetaMaskReady(page);
|
|
469
|
+
const actions = [...metaMaskPromptActions(page), ...metaMaskTextPromptActions(page)];
|
|
470
|
+
const onSetupScreen = page.url().includes('/home.html#/onboarding') ||
|
|
471
|
+
Boolean(await findVisibleLocator(actions, SHORT_TIMEOUT_MS));
|
|
472
|
+
if (!onSetupScreen)
|
|
473
|
+
return;
|
|
474
|
+
const advanced = await clickMetaMaskPromptAction(page, 5_000);
|
|
475
|
+
if (!advanced)
|
|
476
|
+
break;
|
|
477
|
+
}
|
|
478
|
+
if (await waitForMetaMaskHome(page, 10_000))
|
|
479
|
+
return;
|
|
480
|
+
if (page.url().includes('/home.html#/onboarding') ||
|
|
481
|
+
(await findVisibleLocator([...metaMaskPromptActions(page), ...metaMaskTextPromptActions(page)], SHORT_TIMEOUT_MS))) {
|
|
482
|
+
throw new Error('MetaMask wallet import did not complete onboarding.');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
243
485
|
class MetaMaskRealWallet {
|
|
244
486
|
context;
|
|
245
487
|
homePage;
|
|
246
488
|
extensionId;
|
|
247
|
-
|
|
489
|
+
expectedAddress;
|
|
490
|
+
walletPassword;
|
|
491
|
+
constructor(context, homePage, extensionId, expectedAddress, walletPassword) {
|
|
248
492
|
this.context = context;
|
|
249
493
|
this.homePage = homePage;
|
|
250
494
|
this.extensionId = extensionId;
|
|
495
|
+
this.expectedAddress = expectedAddress;
|
|
496
|
+
this.walletPassword = walletPassword;
|
|
251
497
|
}
|
|
252
498
|
async approveTokenPermission(options) {
|
|
253
499
|
const page = await this.notificationPage();
|
|
@@ -276,9 +522,12 @@ class MetaMaskRealWallet {
|
|
|
276
522
|
await scrollButton.click();
|
|
277
523
|
}
|
|
278
524
|
const signed = await clickFirstVisible([
|
|
525
|
+
page.locator(testId('confirm-footer-button')),
|
|
526
|
+
page.locator(testId('confirmation-submit-button')),
|
|
279
527
|
page.locator(testId('request-signature__sign')),
|
|
280
528
|
structuredSignButton,
|
|
281
529
|
page.locator(testId('page-container-footer-next')),
|
|
530
|
+
page.getByRole('button', { name: 'Confirm' }),
|
|
282
531
|
page.getByRole('button', { name: 'Sign' }),
|
|
283
532
|
], DEFAULT_TIMEOUT_MS);
|
|
284
533
|
if (!signed)
|
|
@@ -286,10 +535,20 @@ class MetaMaskRealWallet {
|
|
|
286
535
|
await clickFirstVisible([page.locator(testId('signature-warning-sign-button'))], SHORT_TIMEOUT_MS);
|
|
287
536
|
}
|
|
288
537
|
async confirmTransaction(options) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
538
|
+
let page = await this.notificationPage();
|
|
539
|
+
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
540
|
+
await this.applyGasSetting(page, options?.gasSetting);
|
|
541
|
+
await clickFirstVisible([page.locator('.set-approval-for-all-warning__footer__approve-button')], SHORT_TIMEOUT_MS);
|
|
542
|
+
await this.confirmFooterAction(page);
|
|
543
|
+
await wait(1_000);
|
|
544
|
+
const nextPage = await findMetaMaskActionPage(this.context, this.extensionId);
|
|
545
|
+
if (!nextPage)
|
|
546
|
+
return;
|
|
547
|
+
page = nextPage;
|
|
548
|
+
await waitForMetaMaskReady(page);
|
|
549
|
+
await page.bringToFront().catch(() => undefined);
|
|
550
|
+
}
|
|
551
|
+
throw new Error('MetaMask transaction confirmation did not settle after multiple confirmation steps.');
|
|
293
552
|
}
|
|
294
553
|
async connectToDapp(accounts) {
|
|
295
554
|
const page = await this.notificationPage();
|
|
@@ -302,8 +561,12 @@ class MetaMaskRealWallet {
|
|
|
302
561
|
}
|
|
303
562
|
async getAccountAddress() {
|
|
304
563
|
const page = await this.home();
|
|
564
|
+
await waitForMetaMaskHome(page);
|
|
305
565
|
await closeMetaMaskOverlay(page);
|
|
306
|
-
|
|
566
|
+
if (this.expectedAddress && await pageContainsAddress(page, this.expectedAddress)) {
|
|
567
|
+
return this.expectedAddress;
|
|
568
|
+
}
|
|
569
|
+
const openedMenu = await clickFirstVisible(metaMaskAccountMenuLocators(page), DEFAULT_TIMEOUT_MS);
|
|
307
570
|
if (!openedMenu)
|
|
308
571
|
throw new Error('Unable to open MetaMask account options menu.');
|
|
309
572
|
const openedDetails = await clickFirstVisible([page.locator(testId('account-list-menu-details'))], DEFAULT_TIMEOUT_MS);
|
|
@@ -329,15 +592,28 @@ class MetaMaskRealWallet {
|
|
|
329
592
|
await this.rejectFooterAction(page);
|
|
330
593
|
}
|
|
331
594
|
async home() {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
return this.homePage;
|
|
336
|
-
}
|
|
337
|
-
return openExtensionHome(this.context, this.extensionId);
|
|
595
|
+
const page = await openExtensionHome(this.context, this.extensionId);
|
|
596
|
+
await unlockMetaMaskIfNeeded(page, this.walletPassword);
|
|
597
|
+
return page;
|
|
338
598
|
}
|
|
339
599
|
async notificationPage() {
|
|
340
|
-
|
|
600
|
+
await this.unlockVisibleMetaMask();
|
|
601
|
+
let page = await getNotificationPage(this.context, this.extensionId).catch(async (error) => {
|
|
602
|
+
if (await this.unlockVisibleMetaMask()) {
|
|
603
|
+
return getNotificationPage(this.context, this.extensionId);
|
|
604
|
+
}
|
|
605
|
+
throw error;
|
|
606
|
+
});
|
|
607
|
+
if (await unlockMetaMaskIfNeeded(page, this.walletPassword)) {
|
|
608
|
+
page = await getNotificationPage(this.context, this.extensionId);
|
|
609
|
+
}
|
|
610
|
+
return page;
|
|
611
|
+
}
|
|
612
|
+
async unlockVisibleMetaMask() {
|
|
613
|
+
const page = await findMetaMaskLockedPage(this.context, this.extensionId);
|
|
614
|
+
if (!page)
|
|
615
|
+
return false;
|
|
616
|
+
return unlockMetaMaskIfNeeded(page, this.walletPassword);
|
|
341
617
|
}
|
|
342
618
|
async confirmFooterAction(page, timeout = DEFAULT_TIMEOUT_MS) {
|
|
343
619
|
const confirmed = await clickFirstVisible([
|
|
@@ -427,24 +703,13 @@ class MetaMaskRealWallet {
|
|
|
427
703
|
}
|
|
428
704
|
}
|
|
429
705
|
async function prepareMetaMask({ expectedAddress, page, setup, wallet, }) {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
if ((await isVisible(onboardingImport, SHORT_TIMEOUT_MS).catch(() => false)) ||
|
|
434
|
-
(await isVisible(onboardingCreate, SHORT_TIMEOUT_MS).catch(() => false)) ||
|
|
435
|
-
(await isVisible(onboardingTerms, SHORT_TIMEOUT_MS).catch(() => false))) {
|
|
436
|
-
if (!setup?.password || !setup.seedPhrase) {
|
|
437
|
-
throw new Error('MetaMask is on onboarding. Provide setup.password and setup.seedPhrase to import a wallet through web3-tester, or use a preconfigured persistent profile.');
|
|
706
|
+
if (await isMetaMaskOnboardingVisible(page)) {
|
|
707
|
+
if (!setup?.seedPhrase) {
|
|
708
|
+
throw new Error('MetaMask is on onboarding. Provide setup.seedPhrase to import a wallet through web3-tester, or use a preconfigured persistent profile.');
|
|
438
709
|
}
|
|
439
710
|
await importMetaMaskWallet(page, setup);
|
|
440
711
|
}
|
|
441
|
-
|
|
442
|
-
if (await isVisible(unlockPassword, SHORT_TIMEOUT_MS).catch(() => false)) {
|
|
443
|
-
if (!setup?.password) {
|
|
444
|
-
throw new Error('MetaMask profile is locked. Provide setup.password to unlock through web3-tester, or unlock the persistent profile before running.');
|
|
445
|
-
}
|
|
446
|
-
await unlockMetaMask(page, setup.password);
|
|
447
|
-
}
|
|
712
|
+
await unlockMetaMaskIfNeeded(page, passwordForSetup(setup));
|
|
448
713
|
if (!expectedAddress)
|
|
449
714
|
return;
|
|
450
715
|
const address = await wallet.getAccountAddress();
|
|
@@ -470,7 +735,7 @@ export async function launchRealWallet(options) {
|
|
|
470
735
|
});
|
|
471
736
|
const extensionId = await getExtensionId(context, extensionName);
|
|
472
737
|
const page = await openExtensionHome(context, extensionId);
|
|
473
|
-
const wallet = new MetaMaskRealWallet(context, page, extensionId);
|
|
738
|
+
const wallet = new MetaMaskRealWallet(context, page, extensionId, options.expectedAddress, passwordForSetup(options.setup));
|
|
474
739
|
await prepareMetaMask({
|
|
475
740
|
expectedAddress: options.expectedAddress,
|
|
476
741
|
page,
|
package/dist/real-wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-wallet.js","sourceRoot":"","sources":["../src/real-wallet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"real-wallet.js","sourceRoot":"","sources":["../src/real-wallet.ts"],"names":[],"mappings":"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"}
|
package/docs/API.md
CHANGED
|
@@ -58,7 +58,7 @@ const session = await launchRealWallet({
|
|
|
58
58
|
extensionPath: process.env.FJORD_REAL_WALLET_EXTENSION_PATH as string,
|
|
59
59
|
profileDir: process.env.FJORD_REAL_WALLET_PROFILE_DIR as string,
|
|
60
60
|
expectedAddress: process.env.FJORD_REAL_WALLET_ADDRESS,
|
|
61
|
-
setup: process.env.FJORD_REAL_WALLET_PASSWORD
|
|
61
|
+
setup: process.env.FJORD_REAL_WALLET_PASSWORD || process.env.FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE
|
|
62
62
|
? {
|
|
63
63
|
password: process.env.FJORD_REAL_WALLET_PASSWORD,
|
|
64
64
|
seedPhrase: process.env.FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE,
|
|
@@ -79,8 +79,8 @@ Options:
|
|
|
79
79
|
| `expectedAddress` | Optional account address assertion after unlock/import. |
|
|
80
80
|
| `extensionName` | Extension name used to resolve the extension ID. Defaults to `MetaMask`. |
|
|
81
81
|
| `headless` | Chromium headless setting. Defaults to `false` because extensions require headed Chromium in normal use. |
|
|
82
|
-
| `setup.password` |
|
|
83
|
-
| `setup.seedPhrase` | Seed phrase used
|
|
82
|
+
| `setup.password` | Optional password used to unlock MetaMask, or to import a seed phrase when onboarding is visible. |
|
|
83
|
+
| `setup.seedPhrase` | Seed phrase used if MetaMask opens on onboarding. When no password is supplied, web3-tester imports with a deterministic test profile password. |
|
|
84
84
|
| `slowMo` | Optional Playwright slow-motion delay. |
|
|
85
85
|
|
|
86
86
|
Returned session methods:
|
package/package.json
CHANGED