@broccolo1d/playwright 0.1.0

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.
@@ -0,0 +1,63 @@
1
+ import { expect, type BrowserContext, type Page, type PlaywrightTestConfig } from '@playwright/test';
2
+ import { launchWalletBrowser, type ConnectWalletResult, type MetaMaskNetworkDriver, type SepoliaNetworkAssertionResult, type WalletDappDriver, type WalletDappPageDriverSelectors, type WalletGuardrailConfig, type WalletPromptDriver } from '@broccolo1d/wallet-browser';
3
+ export { expect };
4
+ export type { BrowserContext, Page } from '@playwright/test';
5
+ export type { ConnectWalletResult, MetaMaskNetworkDriver, SepoliaNetworkAssertionResult, WalletBrowserConfig, WalletDappDriver, WalletDappPageDriverSelectors, WalletGuardrailConfig, WalletPromptDriver } from '@broccolo1d/wallet-browser';
6
+ export interface WalletQaConfig {
7
+ /** Launch a persistent Chromium profile with MetaMask. Default is false to avoid wallet side effects. */
8
+ useRealWallet?: boolean;
9
+ /** Directory for screenshots and manifests created by walletArtifacts. */
10
+ artifactDir?: string;
11
+ /** Expected account used by wallet.connect/assertState when not supplied per-call. */
12
+ expectedAccount?: string;
13
+ /** Expected chain id used by wallet.connect/assertState when not supplied per-call. */
14
+ expectedChainId?: string | number;
15
+ /** Expected dapp origin used by wallet.connect when not supplied per-call. */
16
+ origin?: string;
17
+ /** Browser/extension/profile options passed to @broccolo1d/wallet-browser when useRealWallet is true. */
18
+ browser?: Parameters<typeof launchWalletBrowser>[0];
19
+ /** Dapp selectors used to build a simple page driver. */
20
+ dappSelectors?: WalletDappPageDriverSelectors;
21
+ /** Explicit dapp driver; overrides dappSelectors. */
22
+ dapp?: WalletDappDriver;
23
+ /** Explicit wallet prompt driver. Required for real prompt approval; otherwise actions fail closed. */
24
+ prompt?: WalletPromptDriver;
25
+ /** Explicit network driver. Required for chain/account assertions. */
26
+ network?: MetaMaskNetworkDriver;
27
+ /** Default guardrails applied by wallet actions. */
28
+ guardrails?: WalletGuardrailConfig;
29
+ }
30
+ export interface WalletConnectOptions {
31
+ requestConnection?: () => Promise<void>;
32
+ expectedAccount?: string;
33
+ expectedChainId?: string | number;
34
+ origin?: string;
35
+ guardrails?: WalletGuardrailConfig;
36
+ }
37
+ export interface WalletAssertStateOptions {
38
+ expectedAccount?: string;
39
+ expectedChainId?: string | number;
40
+ }
41
+ export interface WalletQa {
42
+ connect(options?: WalletConnectOptions): Promise<ConnectWalletResult>;
43
+ assertState(options?: WalletAssertStateOptions): Promise<SepoliaNetworkAssertionResult>;
44
+ maskAddress(address: string): string;
45
+ }
46
+ export interface WalletArtifacts {
47
+ artifactDir: string;
48
+ screenshot(name: string, options?: Parameters<Page['screenshot']>[0]): Promise<string>;
49
+ writeManifest(name: string, data: Record<string, unknown>): Promise<string>;
50
+ }
51
+ export interface WalletQaFixtures {
52
+ walletConfig: WalletQaConfig;
53
+ walletContext: BrowserContext;
54
+ walletPage: Page;
55
+ wallet: WalletQa;
56
+ walletArtifacts: WalletArtifacts;
57
+ }
58
+ export interface WalletQaWorkerFixtures {
59
+ }
60
+ type WalletQaPlaywrightConfig = PlaywrightTestConfig<WalletQaFixtures, WalletQaWorkerFixtures>;
61
+ export declare function defineWalletQaConfig(config: WalletQaPlaywrightConfig): WalletQaPlaywrightConfig;
62
+ export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & WalletQaFixtures, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions & WalletQaWorkerFixtures>;
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,121 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { defineConfig, expect, test as base } from '@playwright/test';
4
+ import { assertWalletState, connectWallet, createWalletDappPageDriver, launchWalletBrowser, maskEthereumAddress } from '@broccolo1d/wallet-browser';
5
+ export { expect };
6
+ const DEFAULT_WALLET_CONFIG = {
7
+ useRealWallet: false,
8
+ artifactDir: '.wallet-artifacts/playwright'
9
+ };
10
+ export function defineWalletQaConfig(config) {
11
+ return defineConfig(config);
12
+ }
13
+ export const test = base.extend({
14
+ walletConfig: [DEFAULT_WALLET_CONFIG, { option: true }],
15
+ context: async ({ context, walletConfig }, use) => {
16
+ if (!walletConfig.useRealWallet) {
17
+ await use(context);
18
+ return;
19
+ }
20
+ const launchResult = await launchWalletBrowser(walletConfig.browser ?? {});
21
+ try {
22
+ await use(launchResult.context);
23
+ }
24
+ finally {
25
+ await launchResult.context.close();
26
+ }
27
+ },
28
+ walletContext: async ({ context }, use) => {
29
+ await use(context);
30
+ },
31
+ walletPage: async ({ page }, use) => {
32
+ await use(page);
33
+ },
34
+ walletArtifacts: async ({ page, walletConfig }, use, testInfo) => {
35
+ await use(createWalletArtifacts(page, walletConfig, testInfo));
36
+ },
37
+ wallet: async ({ page, walletConfig }, use) => {
38
+ await use(createWalletQa(page, walletConfig));
39
+ }
40
+ });
41
+ function createWalletQa(page, config) {
42
+ return {
43
+ async connect(options = {}) {
44
+ const expectedAccount = options.expectedAccount ?? config.expectedAccount;
45
+ const expectedChainId = options.expectedChainId ?? config.expectedChainId;
46
+ if (!expectedAccount || expectedChainId === undefined) {
47
+ throw new Error('wallet.connect requires expectedAccount and expectedChainId in options or walletConfig.');
48
+ }
49
+ const dapp = createDappDriver(page, config, options.requestConnection);
50
+ const prompt = requireConfigured(config.prompt, 'wallet.connect requires walletConfig.prompt to approve a real wallet prompt; fail closed.');
51
+ const network = requireConfigured(config.network, 'wallet.connect requires walletConfig.network to verify chain/account; fail closed.');
52
+ return connectWallet({
53
+ dapp,
54
+ prompt,
55
+ network,
56
+ expectedAccount,
57
+ expectedChainId,
58
+ origin: options.origin ?? config.origin,
59
+ guardrails: options.guardrails ?? config.guardrails
60
+ });
61
+ },
62
+ async assertState(options = {}) {
63
+ const expectedAccount = options.expectedAccount ?? config.expectedAccount;
64
+ const expectedChainId = options.expectedChainId ?? config.expectedChainId;
65
+ if (!expectedAccount || expectedChainId === undefined) {
66
+ throw new Error('wallet.assertState requires expectedAccount and expectedChainId in options or walletConfig.');
67
+ }
68
+ const network = requireConfigured(config.network, 'wallet.assertState requires walletConfig.network to read wallet state; fail closed.');
69
+ return assertWalletState({ network, expectedAccount, expectedChainId });
70
+ },
71
+ maskAddress(address) {
72
+ return maskEthereumAddress(address);
73
+ }
74
+ };
75
+ }
76
+ function createDappDriver(page, config, requestConnection) {
77
+ const configured = config.dapp ?? (config.dappSelectors ? createWalletDappPageDriver({ page, selectors: config.dappSelectors }) : undefined);
78
+ if (requestConnection) {
79
+ return {
80
+ async requestConnect() {
81
+ await requestConnection();
82
+ },
83
+ async getConnectedAccount() {
84
+ return configured?.getConnectedAccount();
85
+ },
86
+ requestSignature: configured?.requestSignature?.bind(configured),
87
+ requestTransaction: configured?.requestTransaction?.bind(configured)
88
+ };
89
+ }
90
+ return requireConfigured(configured, 'wallet.connect requires requestConnection, walletConfig.dapp, or walletConfig.dappSelectors; fail closed.');
91
+ }
92
+ function createWalletArtifacts(page, config, testInfo) {
93
+ const artifactDir = resolve(config.artifactDir ?? DEFAULT_WALLET_CONFIG.artifactDir);
94
+ const runDir = join(artifactDir, sanitizePathPart(testInfo.project.name || 'default'), sanitizePathPart(testInfo.title));
95
+ return {
96
+ artifactDir: runDir,
97
+ async screenshot(name, options = {}) {
98
+ const filePath = join(runDir, `${sanitizePathPart(name)}.png`);
99
+ await mkdir(dirname(filePath), { recursive: true });
100
+ await page.screenshot({ ...options, path: filePath });
101
+ return filePath;
102
+ },
103
+ async writeManifest(name, data) {
104
+ const filePath = join(runDir, `${sanitizePathPart(name)}.json`);
105
+ await mkdir(dirname(filePath), { recursive: true });
106
+ await writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, 'utf8');
107
+ return filePath;
108
+ }
109
+ };
110
+ }
111
+ function requireConfigured(value, message) {
112
+ if (value === undefined) {
113
+ throw new Error(message);
114
+ }
115
+ return value;
116
+ }
117
+ function sanitizePathPart(value) {
118
+ const sanitized = value.trim().replace(/[^a-zA-Z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
119
+ return sanitized || 'artifact';
120
+ }
121
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@broccolo1d/playwright",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "dist/",
17
+ "package.json"
18
+ ],
19
+ "scripts": {
20
+ "build": "pnpm --filter @broccolo1d/wallet-browser build && tsc -p tsconfig.json",
21
+ "test": "pnpm --filter @broccolo1d/wallet-browser build && vitest run",
22
+ "typecheck": "pnpm --filter @broccolo1d/wallet-browser build && tsc -p tsconfig.json --noEmit"
23
+ },
24
+ "peerDependencies": {
25
+ "@playwright/test": "^1.59.1"
26
+ },
27
+ "dependencies": {
28
+ "@broccolo1d/wallet-browser": "workspace:*"
29
+ },
30
+ "devDependencies": {
31
+ "@playwright/test": "1.59.1",
32
+ "@types/node": "25.6.0",
33
+ "vitest": "4.1.5"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ }
38
+ }