UNPKG

@lidofinance/browser-service

Version:

This package provides the BrowserService class for initializing and managing a Playwright browser context, network configurations, and wallets (EOA or WalletConnect). It facilitates automated testing of interactions with Web3 wallets (e.g., Metamask) and

79 lines (65 loc) 3.06 kB
# Browser service This package provides the BrowserService class for initializing and managing a Playwright browser context, network configurations, and wallets (EOA or WalletConnect). It facilitates automated testing of interactions with Web3 wallets (e.g., Metamask) and offers convenient methods for network switching, connecting to a fork node, etc. # Installation ``` npm install browser-service # or yarn add browser-service ``` # Quick Start ```typescript import { test, expect } from '@playwright/test'; import { BrowserService } from 'browser-service'; test.describe('Example usage of BrowserService', () => { let browserService: BrowserService; test.beforeAll(async () => { browserService = new BrowserService({ networkConfig: { chainName: 'Holesky', chainId: 17000, rpcUrl: 'https://holesky.infura.io/v3/<YOUR_INFURA_KEY>', }, walletConfig: { COMMON: { WALLET_NAME: 'METAMASK', EXTENSION_WALLET_NAME: 'METAMASK', WALLET_TYPE: 'EOA', // or 'WC' for WalletConnect STORE_EXTENSION_ID: 'metamask', LATEST_STABLE_DOWNLOAD_LINK: 'https://example.com/metamask.crx', }, SECRET_PHRASE: 'test test test test test test test test test test test junk', NETWORK_NAME: 'Holesky', }, nodeConfig: { rpcUrlToMock: '**/api/rpc?chainId=17000', }, enableBrowserContext: true, }); // Initialize the wallet (without fork) await browserService.initWalletSetup(); }); test('Example test', async () => { const browserContext = await browserService.getBrowserContext(); const page = await browserService.getBrowserContextPage(); // Perform browser actions, testing wallet interaction with an application await page.goto('https://example.org'); expect(await page.title()).toBe('Example Domain'); }); test.afterAll(async () => { // Clean up after tests await browserService.teardown(); }); }); ``` # Options - `networkConfig` – describes the network (chainId, rpcUrl, chainName). - `walletConfig` – wallet settings (wallet type, extension info, etc.). - `nodeConfig` – configuration for mocking RPC requests (e.g., URL pattern). - `browserOptions` – options for launching the browser (headless, executable paths, etc.). - `enableBrowserContext` – enables or disables the use of a custom data dir for the browser context. # Methods - `initWalletSetup(useFork?: boolean)` - Launches the main wallet initialization procedure by setting up the chosen network. If `useFork = true`, the wallet will work through a local fork node (started automatically). - `setupWithNode()` - Explicitly starts the fork node, creates a test account, and configures the wallet to use the local network. - `setup(commonWalletConfig?: CommonWalletConfig)` - Creates the extension service, sets up the browser context, downloads and initializes the wallet in Playwright. - `teardown()` - Closes the browser context and stops the local node (if it was started).