@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 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 or import the profile. |
139
- | `FJORD_REAL_WALLET_SECRET_RECOVERY_PHRASE` | unset | Optional seed phrase used only when MetaMask opens on onboarding. |
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,5 @@
1
+ export const DEFAULT_WALLET_PASSWORD = 'web3-tester-wallet';
2
+ export function passwordForSetup(setup) {
3
+ return setup?.password ?? (setup?.seedPhrase ? DEFAULT_WALLET_PASSWORD : undefined);
4
+ }
5
+ //# sourceMappingURL=real-wallet-setup.js.map
@@ -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"}
@@ -4,7 +4,7 @@ export type RealWalletProfile = {
4
4
  userDataDir: string;
5
5
  };
6
6
  export type RealWalletSetup = {
7
- password: string;
7
+ password?: string;
8
8
  seedPhrase?: string;
9
9
  };
10
10
  export type RealWalletGasSettings = 'site' | 'low' | 'market' | 'aggressive' | {
@@ -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;AAE1F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,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;AAeF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAW9E;AAqkBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0CnG"}
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"}
@@ -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
- async function clickFirstVisible(locators, timeout = SHORT_TIMEOUT_MS) {
33
- for (const locator of locators) {
34
- const target = locator.first();
35
- if (!(await isVisible(target, timeout).catch(() => false)))
36
- continue;
37
- await target.click();
38
- return true;
39
- }
40
- return false;
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
- for (const locator of locators) {
44
- const target = locator.first();
45
- if (!(await isVisible(target, timeout).catch(() => false)))
46
- continue;
47
- await target.fill(value);
48
- return true;
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
- return false;
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
- page.getByRole('button', { name: 'Close' }),
61
- ], SHORT_TIMEOUT_MS);
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 (!page.url().startsWith(homeUrl))
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.pages().find((candidate) => candidate.url().startsWith(prefix));
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 (!candidate) {
144
- page = context.pages().find((openPage) => openPage.url().startsWith(prefix));
145
- continue;
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 candidate
148
- .waitForURL((url) => url.href.startsWith(prefix), { timeout: Math.min(remaining, 5_000) })
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 singleInputFilled = await fillFirstVisible([
168
- page.locator(testId('srp-input-import__srp-note')),
169
- page.locator('textarea[name="seedPhrase"]'),
170
- page.locator('textarea').first(),
171
- ], words.join(' '), SHORT_TIMEOUT_MS);
172
- if (singleInputFilled)
173
- return;
174
- const wordInputs = page.locator('input[id^="import-srp__srp-word-"], input[data-testid^="import-srp__srp-word-"]');
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 wordInputs.nth(index).fill(word);
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
- if (!setup.password || !setup.seedPhrase) {
185
- 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.');
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
- const importStarted = await clickFirstVisible([
193
- page.locator(testId('onboarding-import-wallet')),
194
- page.locator(testId('onboarding-import-with-srp-button')),
195
- page.getByRole('button', { name: 'Import an existing wallet' }),
196
- page.getByRole('button', { name: 'Import wallet' }),
197
- ], DEFAULT_TIMEOUT_MS);
198
- if (!importStarted)
199
- throw new Error('Unable to start MetaMask wallet import flow.');
200
- await clickFirstVisible([
201
- page.locator(testId('metametrics-no-thanks')),
202
- page.locator(testId('metametrics-i-agree')),
203
- page.getByRole('button', { name: 'No thanks' }),
204
- page.getByRole('button', { name: 'I agree' }),
205
- ], SHORT_TIMEOUT_MS);
206
- await fillSeedPhrase(page, setup.seedPhrase);
207
- const seedConfirmed = await clickFirstVisible([
208
- page.locator(testId('import-srp-confirm')),
209
- page.getByRole('button', { name: 'Confirm Secret Recovery Phrase' }),
210
- page.getByRole('button', { name: 'Confirm' }),
211
- ], DEFAULT_TIMEOUT_MS);
212
- if (!seedConfirmed)
213
- throw new Error('Unable to confirm MetaMask seed phrase import.');
214
- const passwordFilled = await fillFirstVisible([page.locator(testId('create-password-new-input')), page.locator('input[type="password"]').nth(0)], setup.password);
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)], setup.password);
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 clickFirstVisible([
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([page.locator(testId('unlock-password')), page.locator('input[type="password"]').first()], password, DEFAULT_TIMEOUT_MS);
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([page.locator(testId('unlock-submit')), page.getByRole('button', { name: 'Unlock' })], DEFAULT_TIMEOUT_MS);
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
- constructor(context, homePage, extensionId) {
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
- const page = await this.notificationPage();
290
- await this.applyGasSetting(page, options?.gasSetting);
291
- await clickFirstVisible([page.locator('.set-approval-for-all-warning__footer__approve-button')], SHORT_TIMEOUT_MS);
292
- await this.confirmFooterAction(page);
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
- const openedMenu = await clickFirstVisible([page.locator(testId('account-options-menu-button'))], DEFAULT_TIMEOUT_MS);
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
- if (!this.homePage.isClosed()) {
333
- await this.homePage.bringToFront().catch(() => undefined);
334
- await waitForMetaMaskReady(this.homePage);
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
- return getNotificationPage(this.context, this.extensionId);
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
- const onboardingImport = page.locator(testId('onboarding-import-wallet'));
431
- const onboardingCreate = page.locator(testId('onboarding-create-wallet'));
432
- const onboardingTerms = page.locator(testId('onboarding-terms-checkbox'));
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
- const unlockPassword = page.locator(testId('unlock-password'));
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,
@@ -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` | Password used to unlock MetaMask, or to import a seed phrase when onboarding is visible. |
83
- | `setup.seedPhrase` | Seed phrase used only if MetaMask opens on onboarding. |
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:
@@ -1,4 +1,4 @@
1
- import { expect, test } from '@andy-marigold-labs/web3-tester/live-fixtures';
1
+ import { expect, test } from '@marigoldlabs/web3-tester/live-fixtures';
2
2
 
3
3
  test.skip(!process.env.FJORD_PRIVATE_KEY, 'FJORD_PRIVATE_KEY is required for live Sepolia tests.');
4
4
 
@@ -1,4 +1,4 @@
1
- import { expect, test } from '@andy-marigold-labs/web3-tester/fixtures';
1
+ import { expect, test } from '@marigoldlabs/web3-tester/fixtures';
2
2
 
3
3
  type EthereumProvider = {
4
4
  request: (args: { method: string; params?: unknown[] }) => Promise<unknown>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marigoldlabs/web3-tester",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "A Playwright, Anvil, and Viem based Web3 E2E harness with an injected programmable wallet provider.",