@marigoldlabs/web3-tester 0.1.1 → 0.4.1

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.
Files changed (80) hide show
  1. package/.env.example +26 -17
  2. package/LICENSE +21 -0
  3. package/README.md +167 -41
  4. package/dist/anvil.d.ts +90 -2
  5. package/dist/anvil.d.ts.map +1 -1
  6. package/dist/anvil.js +215 -13
  7. package/dist/anvil.js.map +1 -1
  8. package/dist/contracts/test-erc20.d.ts +227 -0
  9. package/dist/contracts/test-erc20.d.ts.map +1 -0
  10. package/dist/contracts/test-erc20.js +8 -0
  11. package/dist/contracts/test-erc20.js.map +1 -0
  12. package/dist/erc20.d.ts +38 -0
  13. package/dist/erc20.d.ts.map +1 -0
  14. package/dist/erc20.js +229 -0
  15. package/dist/erc20.js.map +1 -0
  16. package/dist/fixtures.d.ts +44 -2
  17. package/dist/fixtures.d.ts.map +1 -1
  18. package/dist/fixtures.js +162 -17
  19. package/dist/fixtures.js.map +1 -1
  20. package/dist/index.d.ts +17 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +7 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/injected-provider.d.ts.map +1 -1
  25. package/dist/injected-provider.js +142 -79
  26. package/dist/injected-provider.js.map +1 -1
  27. package/dist/live-fixtures.d.ts +32 -3
  28. package/dist/live-fixtures.d.ts.map +1 -1
  29. package/dist/live-fixtures.js +64 -27
  30. package/dist/live-fixtures.js.map +1 -1
  31. package/dist/matchers.d.ts +90 -0
  32. package/dist/matchers.d.ts.map +1 -0
  33. package/dist/matchers.js +268 -0
  34. package/dist/matchers.js.map +1 -0
  35. package/dist/metamask-extension.d.ts +34 -0
  36. package/dist/metamask-extension.d.ts.map +1 -0
  37. package/dist/metamask-extension.js +97 -0
  38. package/dist/metamask-extension.js.map +1 -0
  39. package/dist/mock-wallet-controller.d.ts +205 -3
  40. package/dist/mock-wallet-controller.d.ts.map +1 -1
  41. package/dist/mock-wallet-controller.js +843 -46
  42. package/dist/mock-wallet-controller.js.map +1 -1
  43. package/dist/private-key-rpc-client.d.ts +1730 -0
  44. package/dist/private-key-rpc-client.d.ts.map +1 -1
  45. package/dist/private-key-rpc-client.js +105 -12
  46. package/dist/private-key-rpc-client.js.map +1 -1
  47. package/dist/real-wallet-cache.d.ts +65 -0
  48. package/dist/real-wallet-cache.d.ts.map +1 -0
  49. package/dist/real-wallet-cache.js +245 -0
  50. package/dist/real-wallet-cache.js.map +1 -0
  51. package/dist/real-wallet-fixtures.d.ts +52 -0
  52. package/dist/real-wallet-fixtures.d.ts.map +1 -0
  53. package/dist/real-wallet-fixtures.js +73 -0
  54. package/dist/real-wallet-fixtures.js.map +1 -0
  55. package/dist/real-wallet-setup.d.ts +4 -0
  56. package/dist/real-wallet-setup.d.ts.map +1 -0
  57. package/dist/real-wallet-setup.js +5 -0
  58. package/dist/real-wallet-setup.js.map +1 -0
  59. package/dist/real-wallet.d.ts +124 -15
  60. package/dist/real-wallet.d.ts.map +1 -1
  61. package/dist/real-wallet.js +1682 -138
  62. package/dist/real-wallet.js.map +1 -1
  63. package/dist/transactions.d.ts +118 -0
  64. package/dist/transactions.d.ts.map +1 -0
  65. package/dist/transactions.js +207 -0
  66. package/dist/transactions.js.map +1 -0
  67. package/dist/types.d.ts +1 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/walletconnect.d.ts +206 -0
  70. package/dist/walletconnect.d.ts.map +1 -0
  71. package/dist/walletconnect.js +359 -0
  72. package/dist/walletconnect.js.map +1 -0
  73. package/examples/live-sepolia.spec.ts +21 -2
  74. package/examples/local-wallet.spec.ts +1 -1
  75. package/package.json +62 -6
  76. package/docs/API.md +0 -223
  77. package/docs/ARCHITECTURE.md +0 -81
  78. package/docs/CONSUMING_FROM_FJORD.md +0 -123
  79. package/docs/FJORD_LIVE_QA.md +0 -87
  80. package/docs/RELEASE_CHECKLIST.md +0 -55
@@ -0,0 +1,73 @@
1
+ import path from 'node:path';
2
+ import { test as base } from '@playwright/test';
3
+ import { prepareMetaMaskExtension } from './metamask-extension.js';
4
+ import { buildWalletProfile, cloneWalletProfile, } from './real-wallet-cache.js';
5
+ import { launchRealWallet, } from './real-wallet.js';
6
+ const setupFromEnv = () => ({
7
+ password: process.env.WEB3_TESTER_REAL_WALLET_PASSWORD || undefined,
8
+ seedPhrase: process.env.WEB3_TESTER_REAL_WALLET_SECRET_RECOVERY_PHRASE || undefined,
9
+ });
10
+ /**
11
+ * Playwright fixtures for real-MetaMask tests. Each test gets a disposable
12
+ * clone of a cached, pre-onboarded profile (built once per seed phrase +
13
+ * extension version), so tests are isolated, parallel-safe, and skip
14
+ * onboarding cost after the first run. `context` and `page` are rebound to
15
+ * the persistent extension context.
16
+ */
17
+ export const test = base.extend({
18
+ realWalletOptions: [
19
+ async ({}, use) => {
20
+ await use({});
21
+ },
22
+ { option: true },
23
+ ],
24
+ realWallet: async ({ realWalletOptions }, use, testInfo) => {
25
+ const options = realWalletOptions;
26
+ const setup = options.setup ?? setupFromEnv();
27
+ const extensionPath = options.extensionPath ??
28
+ process.env.WEB3_TESTER_REAL_WALLET_EXTENSION_PATH ??
29
+ (await prepareMetaMaskExtension({ version: options.metamaskVersion }));
30
+ let profileDir = options.profileDir ?? process.env.WEB3_TESTER_REAL_WALLET_PROFILE_DIR;
31
+ if (!profileDir) {
32
+ if (!setup.seedPhrase) {
33
+ throw new Error('Real-wallet fixtures need a seed phrase (realWalletOptions.setup.seedPhrase or ' +
34
+ 'WEB3_TESTER_REAL_WALLET_SECRET_RECOVERY_PHRASE) to build a cached profile, ' +
35
+ 'or an explicit profileDir pointing at a prepared MetaMask profile.');
36
+ }
37
+ const cachedProfile = await buildWalletProfile({
38
+ extensionPath,
39
+ setup,
40
+ headless: options.headless,
41
+ generation: options.generation,
42
+ customize: options.profileSetup,
43
+ });
44
+ profileDir = await cloneWalletProfile(cachedProfile, path.join(testInfo.outputDir, 'metamask-profile'));
45
+ }
46
+ const session = await launchRealWallet({
47
+ baseURL: options.baseURL,
48
+ expectedAddress: options.expectedAddress,
49
+ extensionPath,
50
+ generation: options.generation,
51
+ headless: options.headless,
52
+ profileDir,
53
+ setup,
54
+ });
55
+ try {
56
+ await use(session);
57
+ }
58
+ finally {
59
+ await session.close().catch(() => undefined);
60
+ }
61
+ },
62
+ context: async ({ realWallet }, use) => {
63
+ await use(realWallet.context);
64
+ },
65
+ page: async ({ context }, use) => {
66
+ const page = await context.newPage();
67
+ await use(page);
68
+ await page.close().catch(() => undefined);
69
+ },
70
+ });
71
+ // The web3-extended expect: every matcher from ./matchers.js, zero migration.
72
+ export { expect } from './matchers.js';
73
+ //# sourceMappingURL=real-wallet-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"real-wallet-fixtures.js","sourceRoot":"","sources":["../src/real-wallet-fixtures.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1,10 +1,19 @@
1
- import { type BrowserContext } from '@playwright/test';
1
+ import { type BrowserContext, type Locator } from '@playwright/test';
2
2
  export type RealWalletProfile = {
3
3
  profileDirectory?: string;
4
4
  userDataDir: string;
5
5
  };
6
+ /**
7
+ * MetaMask UI generation the selector surface drives. '13x' is the
8
+ * multichain UI (validated against 13.34.1, the pinned default); '12x' is
9
+ * the classic UI (last validated against 12.23.1). Both are first-class
10
+ * configuration: the generation is derived from the extension manifest at
11
+ * launch and selects which generation's selectors run — the other
12
+ * generation's selectors are not probed as fallbacks.
13
+ */
14
+ export type WalletGeneration = '12x' | '13x';
6
15
  export type RealWalletSetup = {
7
- password: string;
16
+ password?: string;
8
17
  seedPhrase?: string;
9
18
  };
10
19
  export type RealWalletGasSettings = 'site' | 'low' | 'market' | 'aggressive' | {
@@ -17,12 +26,49 @@ export type RealWalletLaunchOptions = {
17
26
  expectedAddress?: string;
18
27
  extensionName?: string;
19
28
  extensionPath: string;
29
+ /**
30
+ * UI generation to drive. Defaults to the major version in the extension's
31
+ * manifest (>= 13 → '13x'). Set explicitly for custom builds whose
32
+ * manifest version does not reflect their UI generation.
33
+ */
34
+ generation?: WalletGeneration;
35
+ /**
36
+ * Run the browser headless. There is deliberately no default — choose
37
+ * explicitly here or via WEB3_TESTER_REAL_WALLET_HEADLESS=true|false.
38
+ * Headed is the fully validated mode; headless loads the extension through
39
+ * the full Chromium build (channel 'chromium') and is validated for
40
+ * extension load + clipboard, but the full confirmation journey is not
41
+ * proven headless yet.
42
+ */
20
43
  headless?: boolean;
21
44
  profileDir: string;
22
45
  setup?: RealWalletSetup;
23
46
  slowMo?: number;
24
47
  };
48
+ export type RealWalletNetwork = {
49
+ name: string;
50
+ rpcUrl: string;
51
+ chainId: number;
52
+ symbol: string;
53
+ blockExplorerUrl?: string;
54
+ };
55
+ export type RealWalletToken = {
56
+ /** ERC-20 contract address (0x + 40 hex). */
57
+ address: string;
58
+ /** Optional symbol override; MetaMask usually autofills from the contract. */
59
+ symbol?: string;
60
+ /** Optional decimals override. */
61
+ decimals?: number;
62
+ /**
63
+ * 13.x only: network to import the token on (name as shown in the import
64
+ * modal's network selector). Defaults to the wallet's active network.
65
+ */
66
+ networkName?: string;
67
+ };
25
68
  export type RealWalletController = {
69
+ addNetwork(network: RealWalletNetwork): Promise<void>;
70
+ approveNewNetwork(): Promise<void>;
71
+ approveSwitchNetwork(): Promise<void>;
26
72
  approveTokenPermission(options?: {
27
73
  gasSetting?: RealWalletGasSettings;
28
74
  spendLimit?: 'max' | number;
@@ -33,27 +79,90 @@ export type RealWalletController = {
33
79
  }): Promise<void>;
34
80
  connectToDapp(accounts?: string[]): Promise<void>;
35
81
  getAccountAddress(): Promise<string>;
82
+ rejectNewNetwork(): Promise<void>;
36
83
  rejectSignature(): Promise<void>;
84
+ rejectSwitchNetwork(): Promise<void>;
85
+ rejectTokenPermission(): Promise<void>;
37
86
  rejectTransaction(): Promise<void>;
38
- };
39
- export type RealWalletSession = {
40
- approveTokenPermission(options?: {
41
- gasSetting?: RealWalletGasSettings;
42
- spendLimit?: 'max' | number;
87
+ switchNetwork(name: string, options?: {
88
+ chainId?: number;
43
89
  }): Promise<void>;
44
- close(): Promise<void>;
45
- confirmSignature(): Promise<void>;
46
- confirmTransaction(options?: {
90
+ /** Creates the next derived account on the active SRP, optionally named. */
91
+ addNewAccount(name?: string): Promise<void>;
92
+ /** Synpress-parity alias for approveAddToken(). */
93
+ addNewToken(): Promise<void>;
94
+ /** Approves a pending wallet_watchAsset ("Add suggested tokens") prompt. */
95
+ approveAddToken(): Promise<void>;
96
+ rejectAddToken(): Promise<void>;
97
+ /**
98
+ * confirmTransaction, then watch the newest activity row until confirmed.
99
+ * The hash is read best-effort via "Copy transaction ID" — undefined when
100
+ * the clipboard read fails (the mining wait still completes).
101
+ */
102
+ confirmTransactionAndWaitForMining(options?: {
47
103
  gasSetting?: RealWalletGasSettings;
48
- }): Promise<void>;
49
- connectToDapp(accounts?: string[]): Promise<void>;
104
+ /** Wait budget for the activity row to reach confirmed. Default 60_000. */
105
+ timeoutMs?: number;
106
+ }): Promise<{
107
+ txHash?: `0x${string}`;
108
+ }>;
109
+ /** Manual token import: tokens tab → Import tokens → Custom token form. */
110
+ importToken(token: RealWalletToken): Promise<void>;
111
+ /** Imports a private-key account ("Imported" keyring); throws on MetaMask errors (e.g. duplicates). */
112
+ importWalletFromPrivateKey(privateKey: string): Promise<void>;
113
+ /** Global menu → Lock; resolves once the unlock screen is visible. */
114
+ lock(): Promise<void>;
115
+ renameAccount(currentName: string, newName: string): Promise<void>;
116
+ /** Clears activity/nonce data (12.x: Advanced; 13.x: Developer tools). */
117
+ resetAccount(): Promise<void>;
118
+ /** Selects an account in the picker by display name or (best-effort on 13.x) address. */
119
+ switchAccount(nameOrAddress: string): Promise<void>;
120
+ /** Idempotent when `on` is given (reads the toggle first); blind toggle when omitted. */
121
+ toggleShowTestNetworks(on?: boolean): Promise<void>;
122
+ /** Unlocks with the given password or the password from launch setup. */
123
+ unlock(password?: string): Promise<void>;
124
+ };
125
+ export type RealWalletSession = RealWalletController & {
126
+ close(): Promise<void>;
50
127
  context: BrowserContext;
51
128
  extensionId: string;
52
- getAccountAddress(): Promise<string>;
53
- rejectSignature(): Promise<void>;
54
- rejectTransaction(): Promise<void>;
55
129
  wallet: RealWalletController;
56
130
  };
131
+ /**
132
+ * A selector-stack entry optionally scoped to one UI generation. Bare
133
+ * locators apply to both generations; tagged entries are dropped — not
134
+ * probed — when the wallet is configured for the other generation, so a
135
+ * wrong-generation selector can never burn its probe budget.
136
+ */
137
+ type GenLocator = Locator | {
138
+ gen: WalletGeneration;
139
+ loc: Locator;
140
+ };
141
+ /**
142
+ * @internal Resolves a generation-annotated selector stack against the
143
+ * configured generation: tagged entries of the other generation are dropped,
144
+ * bare entries pass through, and relative order is preserved.
145
+ */
146
+ export declare function resolveGenLocators(locators: readonly GenLocator[], generation: WalletGeneration): Locator[];
147
+ /** @internal Maps an extension manifest version to the UI generation it ships. */
148
+ export declare function walletGenerationForVersion(version: string): WalletGeneration;
149
+ /**
150
+ * @internal Resolves the headed/headless choice. There is deliberately no
151
+ * default: the two modes have different validation status (headed is fully
152
+ * validated end to end; headless is validated for extension load and the
153
+ * clipboard round-trip only), so every run must pick one explicitly.
154
+ */
155
+ export declare function resolveRealWalletHeadless(explicit?: boolean): boolean;
57
156
  export declare function resolveRealWalletProfile(profileDir: string): RealWalletProfile;
157
+ /** @internal Validates and trims a 32-byte hex private key (0x optional). */
158
+ export declare function normalizePrivateKey(privateKey: string): string;
159
+ /** @internal */
160
+ export declare function isFullTxHash(value: string | undefined): value is `0x${string}`;
161
+ /**
162
+ * @internal Matches an account picker row by display name, or by full /
163
+ * shortened address when the identifier is an address.
164
+ */
165
+ export declare function accountRowMatcher(identifier: string): RegExp;
58
166
  export declare function launchRealWallet(options: RealWalletLaunchOptions): Promise<RealWalletSession>;
167
+ export {};
59
168
  //# sourceMappingURL=real-wallet.d.ts.map
@@ -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":"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"}