diff --git a/packages/wallets/src/bitget/bitgetPage.ts b/packages/wallets/src/bitget/bitgetPage.ts index 1a9bc013..e4c9cbbd 100644 --- a/packages/wallets/src/bitget/bitgetPage.ts +++ b/packages/wallets/src/bitget/bitgetPage.ts @@ -78,27 +78,31 @@ export class BitgetPage implements WalletPage { }); } - // eslint-disable-next-line - async addNetwork(networkName: string, networkUrl: string, chainId: number, tokenSymbol: string) {} - - // eslint-disable-next-line - async importKey(key: string) {} + async addNetwork() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertTxAmount(page: Page, expectedAmount: string) {} + async importKey() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async confirmTx(page: Page) {} + async assertTxAmount() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async signTx(page: Page) {} + async confirmTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async approveTokenTx(page: Page) {} + async signTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async useDefaultToApprove(page: Page) {} + async approveTokenTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertReceiptAddress(page: Page, expectedAddress: string) {} + async assertReceiptAddress() { + throw new Error('Method not implemented.'); + } } diff --git a/packages/wallets/src/coin98/coin98.page.ts b/packages/wallets/src/coin98/coin98.page.ts index 8857a000..8176f344 100644 --- a/packages/wallets/src/coin98/coin98.page.ts +++ b/packages/wallets/src/coin98/coin98.page.ts @@ -105,8 +105,9 @@ export class Coin98 implements WalletPage { }); } - // eslint-disable-next-line - async assertTxAmount(page: Page, expectedAmount: string) {} + async assertTxAmount() { + throw new Error('Method not implemented.'); + } async confirmTx(page: Page) { await test.step('Confirm TX', async () => { @@ -114,20 +115,23 @@ export class Coin98 implements WalletPage { }); } - // eslint-disable-next-line - async signTx(page: Page) {} + async signTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertReceiptAddress(page: Page, expectedAmount: string) {} + async assertReceiptAddress() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async addNetwork(networkName: string, networkUrl: string, chainId: number, tokenSymbol: string) {} + async addNetwork() { + throw new Error('Method not implemented.'); + } // We need this function cause Coin98 wallet open the extension page after installation - // and close other opened wallet pages (include page with we work so here was test crash) - // We wait for that action and after it we continue testing + // and close other opened wallet pages (include page with we work so here was the test crash) + // We wait for that action and after that we continue testing async waitForAutomaticallyOpenedWalletPageAfterInstallation() { - if ((await this.browserContext.pages().length) === 1) { + if (this.browserContext.pages().length === 1) { await this.browserContext.waitForEvent('page'); } this.page = await this.browserContext.pages()[1]; diff --git a/packages/wallets/src/coinbase/coinbase.page.ts b/packages/wallets/src/coinbase/coinbase.page.ts index 94d3f52e..48f65093 100644 --- a/packages/wallets/src/coinbase/coinbase.page.ts +++ b/packages/wallets/src/coinbase/coinbase.page.ts @@ -1,4 +1,4 @@ -import { WalletConfig } from '../wallets.constants'; +import { NetworkConfig, WalletConfig } from '../wallets.constants'; import { WalletPage } from '../wallet.page'; import expect from 'expect'; import { test, BrowserContext, Page } from '@playwright/test'; @@ -70,12 +70,7 @@ export class CoinbasePage implements WalletPage { }); } - async addNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - ) { + async addNetwork(networkConfig: NetworkConfig) { await test.step('Add network', async () => { if (!this.page) throw "Page isn't ready"; await this.navigate(); @@ -85,12 +80,21 @@ export class CoinbasePage implements WalletPage { this.page.context().waitForEvent('page', { timeout: 5000 }), await this.page.click('button[data-testid="add-custom-network"]'), ]); - await addNetworkPage.fill('input[name="chainName"]', networkName); - await addNetworkPage.fill('input[name="rpcUrls[0]"]', networkUrl); - await addNetworkPage.fill('input[name="chainId"]', String(chainId)); + await addNetworkPage.fill( + 'input[name="chainName"]', + networkConfig.chainName, + ); + await addNetworkPage.fill( + 'input[name="rpcUrls[0]"]', + networkConfig.rpcUrl, + ); + await addNetworkPage.fill( + 'input[name="chainId"]', + String(networkConfig.chainId), + ); await addNetworkPage.fill( 'input[name="nativeCurrency.symbol"]', - tokenSymbol, + networkConfig.tokenSymbol, ); await addNetworkPage.click('text=Save'); }); @@ -126,13 +130,15 @@ export class CoinbasePage implements WalletPage { }); } - // eslint-disable-next-line - async signTx(page: Page) {} + async signTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertReceiptAddress(page: Page, expectedAddress: string) { + async assertReceiptAddress() { + throw new Error('Method not implemented.'); } - // eslint-disable-next-line - async importKey(key: string) {} + async importKey() { + throw new Error('Method not implemented.'); + } } diff --git a/packages/wallets/src/exodus/exodus.page.ts b/packages/wallets/src/exodus/exodus.page.ts index 3a3e015a..07ce3b68 100644 --- a/packages/wallets/src/exodus/exodus.page.ts +++ b/packages/wallets/src/exodus/exodus.page.ts @@ -84,22 +84,23 @@ export class ExodusPage implements WalletPage { }); } - // eslint-disable-next-line - async signTx(page: Page) {} + async signTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async importKey(key: string) {} + async importKey() { + throw new Error('Method not implemented.'); + } - async addNetwork( - networkName: string, // eslint-disable-line - networkUrl: string, // eslint-disable-line - chainId: number, // eslint-disable-line - tokenSymbol: string, // eslint-disable-line - ) {} // eslint-disable-line + async addNetwork() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertTxAmount(page: Page, expectedAmount: string) {} + async assertTxAmount() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertReceiptAddress(page: Page, expectedAddress: string) {} + async assertReceiptAddress() { + throw new Error('Method not implemented.'); + } } diff --git a/packages/wallets/src/metamask/metamask.page.ts b/packages/wallets/src/metamask/metamask.page.ts index 09d355e9..03a47a0c 100644 --- a/packages/wallets/src/metamask/metamask.page.ts +++ b/packages/wallets/src/metamask/metamask.page.ts @@ -1,8 +1,8 @@ -import { WalletConfig } from '../wallets.constants'; +import { NetworkConfig, WalletConfig } from '../wallets.constants'; import { WalletPage } from '../wallet.page'; import { expect } from '@playwright/test'; import { test, BrowserContext, Page } from '@playwright/test'; -import { HomePage, LoginPage, SettingsPage } from './pages'; +import { HomePage, LoginPage } from './pages'; import { OnboardingPage, WalletOperationPage, @@ -65,11 +65,6 @@ export class MetamaskPage implements WalletPage { await this.popoverElements.closePopover(); await this.walletOperation.cancelAllTxInQueue(); // reject all tx in queue if exist } - await new SettingsPage( - await this.browserContext.newPage(), - this.extensionUrl, - this.config, - ).setupNetworkChangingSetting(); // need to make it possible to change the wallet network }); } @@ -85,52 +80,35 @@ export class MetamaskPage implements WalletPage { }); } - async setupNetwork(standConfig: Record) { - await test.step(`Setup "${standConfig.chainName}" Network`, async () => { + async setupNetwork(networkConfig: NetworkConfig) { + await test.step(`Setup "${networkConfig.chainName}" Network`, async () => { await this.header.networkListButton.click(); if ( await this.header.networkList.isNetworkExist( - standConfig.chainName, - standConfig.rpcUrl, - standConfig.chainId, + networkConfig.chainName, + networkConfig.rpcUrl, + networkConfig.chainId, ) ) { await this.header.networkList.clickToNetworkItemButton( - standConfig.chainName, + networkConfig.chainName, ); } else { await this.header.networkList.networkDisplayCloseBtn.click(); - await this.addNetwork( - standConfig.chainName, - standConfig.rpcUrl, - standConfig.chainId, - standConfig.tokenSymbol, - standConfig.scan, - ); + await this.addNetwork(networkConfig); } }); } - async addNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - blockExplorer = '', - isClosePage = false, - ) { - await test.step(`Add new network "${networkName}"`, async () => { + async addNetwork(networkConfig: NetworkConfig, isClosePage = false) { + await test.step(`Add new network "${networkConfig.chainName}"`, async () => { await this.navigate(); - if (await isPopularNetwork(networkName)) { - await this.header.networkList.addPopularNetwork(networkName); - } else { - await this.header.networkList.addNetworkManually( - networkName, - networkUrl, - chainId, - tokenSymbol, - blockExplorer, + if (await isPopularNetwork(networkConfig.chainName)) { + await this.header.networkList.addPopularNetwork( + networkConfig.chainName, ); + } else { + await this.header.networkList.addNetworkManually(networkConfig); } if (isClosePage) await this.page.close(); }); diff --git a/packages/wallets/src/metamask/pages/elements/networkList.element.ts b/packages/wallets/src/metamask/pages/elements/networkList.element.ts index b1beda4a..07d97eeb 100644 --- a/packages/wallets/src/metamask/pages/elements/networkList.element.ts +++ b/packages/wallets/src/metamask/pages/elements/networkList.element.ts @@ -1,5 +1,6 @@ import { Locator, Page, test } from '@playwright/test'; import { NetworkSetting } from './networkSetting.element'; +import { NetworkConfig } from '../../../wallets.constants'; export class NetworkList { page: Page; @@ -42,11 +43,6 @@ export class NetworkList { }); } - async switchNetwork(networkName: string) { - await this.networkListButton.click(); - await this.dialogSection.getByText(networkName).click(); - } - async getNetworkListText() { return await test.step('Get network list', async () => { const networkList = await this.networkItemText.all(); @@ -86,35 +82,27 @@ export class NetworkList { ); const rpcUrlsFound = await elements.filter({ hasText: rpcUrl }).count(); - if (rpcUrlsFound == 0) return false; - return true; + return rpcUrlsFound != 0; } - async addNetworkManually( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - blockExplorer = '', - ) { + async addNetworkManually(networkConfig: NetworkConfig) { await test.step('Open the form to add network manually', async () => { await this.networkListButton.click(); }); - if (await this.dialogSection.getByText(networkName).isVisible()) { - await this.openModalNetworkEdit(chainId); - await this.networkSetting.addRpcForNetwork(networkUrl, blockExplorer); + if ( + await this.dialogSection.getByText(networkConfig.chainName).isVisible() + ) { + await this.openModalNetworkEdit(networkConfig.chainId); + await this.networkSetting.addRpcForNetwork( + networkConfig.rpcUrl, + networkConfig.scan, + ); } else { await test.step('Add custom network', async () => { await this.addCustomNetworkButton.click(); }); - await this.networkSetting.addCustomNetwork( - networkName, - networkUrl, - chainId, - tokenSymbol, - blockExplorer, - ); + await this.networkSetting.addCustomNetwork(networkConfig); } } diff --git a/packages/wallets/src/metamask/pages/elements/networkSetting.element.ts b/packages/wallets/src/metamask/pages/elements/networkSetting.element.ts index 43280584..22f6f58e 100644 --- a/packages/wallets/src/metamask/pages/elements/networkSetting.element.ts +++ b/packages/wallets/src/metamask/pages/elements/networkSetting.element.ts @@ -1,4 +1,5 @@ import { Locator, Page, test } from '@playwright/test'; +import { NetworkConfig } from '../../../wallets.constants'; export class NetworkSetting { page: Page; @@ -66,37 +67,29 @@ export class NetworkSetting { }); } - async addCustomNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - blockExplorer = '', - ) { + async addCustomNetwork(networkConfig: NetworkConfig) { await test.step('Fill the network fields', async () => { await test.step('Fill the network name', async () => { - await this.networkNameInput.fill(networkName); + await this.networkNameInput.fill(networkConfig.chainName); }); await test.step('Fill the network rpc', async () => { await this.addRpcDropDown.click(); await this.addRpcButton.click(); - await this.networkRpcUrlInput.fill(networkUrl); + await this.networkRpcUrlInput.fill(networkConfig.rpcUrl); await this.addUrlButton.click(); }); await test.step('Fill the network chainId', async () => { - await this.networkChainIdInput.fill(String(chainId)); + await this.networkChainIdInput.fill(String(networkConfig.chainId)); }); await test.step('Fill the network token symbol', async () => { - await this.networkTickerInput.fill(tokenSymbol); + await this.networkTickerInput.fill(networkConfig.tokenSymbol); + }); + await test.step('Fill the network explorer url', async () => { + await this.networkExplorerDropDown.click(); + await this.addBlockExplorerButton.click(); + await this.networkExplorerUrlInput.fill(networkConfig.scan); + await this.addExplorerUrlButton.click(); }); - if (blockExplorer != '') { - await test.step('Fill the network explorer url', async () => { - await this.networkExplorerDropDown.click(); - await this.addBlockExplorerButton.click(); - await this.networkExplorerUrlInput.fill(blockExplorer); - await this.addExplorerUrlButton.click(); - }); - } }); await test.step('Save the new network', async () => { diff --git a/packages/wallets/src/metamask/pages/settings.page.ts b/packages/wallets/src/metamask/pages/settings.page.ts index 1024a5e9..84f0521a 100644 --- a/packages/wallets/src/metamask/pages/settings.page.ts +++ b/packages/wallets/src/metamask/pages/settings.page.ts @@ -37,19 +37,4 @@ export class SettingsPage { ); }); } - - async setupNetworkChangingSetting() { - await test.step('Check toggle state', async () => { - await this.openSettings(); - await this.experimentalTabButton.click(); - const toggleState = - await this.inputNetworksForEachSiteToggle.getAttribute('value'); - - if (toggleState === 'true') { - await test.step('Turn off the toggle of the setting network changing', async () => { - await this.selectNetworksForEachSiteToggle.click(); - }); - } - }); - } } diff --git a/packages/wallets/src/metamask/pages/walletOperations.page.ts b/packages/wallets/src/metamask/pages/walletOperations.page.ts index 249da997..865e1470 100644 --- a/packages/wallets/src/metamask/pages/walletOperations.page.ts +++ b/packages/wallets/src/metamask/pages/walletOperations.page.ts @@ -14,6 +14,7 @@ export class WalletOperationPage { confirmRejectAllTxsButton: Locator; recipientButton: Locator; recipientAddress: Locator; + popover: Locator; popoverCloseButton: Locator; txDetailBlock: Locator; txDetailAmount: Locator; @@ -40,7 +41,10 @@ export class WalletOperationPage { .getByTestId('transaction-details-recipient-row') .locator('.name'); this.recipientAddress = this.page.locator('input[id="address"]'); - this.popoverCloseButton = this.page.locator('button[aria-label="Close"]'); + this.popover = this.page.locator('section[role="dialog"]'); + this.popoverCloseButton = this.popover.locator( + 'button[aria-label="Close"]', + ); this.txDetailBlock = this.page.getByTestId('simulation-details-layout'); this.txDetailAmount = this.txDetailBlock.getByTestId( 'simulation-details-amount-pill', diff --git a/packages/wallets/src/okx/okx.page.ts b/packages/wallets/src/okx/okx.page.ts index 8af865f9..0c14ba5c 100644 --- a/packages/wallets/src/okx/okx.page.ts +++ b/packages/wallets/src/okx/okx.page.ts @@ -1,4 +1,4 @@ -import { WalletConfig } from '../wallets.constants'; +import { NetworkConfig, WalletConfig } from '../wallets.constants'; import { WalletPage } from '../wallet.page'; import { test, BrowserContext, Page, expect } from '@playwright/test'; import { @@ -84,13 +84,13 @@ export class OkxPage implements WalletPage { /** Checks the is installed the needed network and add new network to wallet (if needed) */ async setupNetwork(standConfig: Record) { await test.step(`Setup "${standConfig.chainName}" Network`, async () => { - await this.addNetwork( - standConfig.chainName, - standConfig.rpcUrl, - standConfig.chainId, - standConfig.tokenSymbol, - standConfig.scan, - ); + await this.addNetwork({ + chainName: standConfig.chainName, + rpcUrl: standConfig.rpcUrl, + chainId: standConfig.chainId, + tokenSymbol: standConfig.tokenSymbol, + scan: standConfig.scan, + }); }); } @@ -114,30 +114,18 @@ export class OkxPage implements WalletPage { } /** Add new network to wallet */ - async addNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - blockExplorer?: string, - ) { - if (!(await isNeedAddNetwork(networkName))) { + async addNetwork(networkConfig: NetworkConfig) { + if (!(await isNeedAddNetwork(networkConfig.chainName))) { return; } await this.navigate(); await this.homePage.networkListButton.click(); if ( !(await this.networkListPage.isNetworkExist( - getCorrectNetworkName(networkName), + getCorrectNetworkName(networkConfig.chainName), )) ) { - await this.networkListPage.addCustomNetwork( - networkName, - networkUrl, - chainId, - tokenSymbol, - blockExplorer, - ); + await this.networkListPage.addCustomNetwork(networkConfig); } await this.page.close(); } @@ -148,7 +136,7 @@ export class OkxPage implements WalletPage { * */ async changeNetwork(networkName: string) { await test.step(`Switch network to "${networkName}"`, async () => { - networkName = await getCorrectNetworkName(networkName); + networkName = getCorrectNetworkName(networkName); await this.navigate(); // switch network for wallet diff --git a/packages/wallets/src/okx/pages/networkList.page.ts b/packages/wallets/src/okx/pages/networkList.page.ts index 5097f1d2..3215126b 100644 --- a/packages/wallets/src/okx/pages/networkList.page.ts +++ b/packages/wallets/src/okx/pages/networkList.page.ts @@ -1,4 +1,5 @@ import { Locator, Page, test } from '@playwright/test'; +import { NetworkConfig } from '../../wallets.constants'; export class NetworkList { page: Page; @@ -93,34 +94,30 @@ export class NetworkList { }); } - async addCustomNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - scan: string, - ) { + async addCustomNetwork(networkConfig: NetworkConfig) { await test.step('Add network', async () => { await this.userNetworkTabButton.click(); await this.addCustomNetworkButton.click(); - await this.createNetworkInputs.nth(0).fill(networkName); - await this.createNetworkInputs.nth(1).fill(networkUrl); + await this.createNetworkInputs.nth(0).fill(networkConfig.chainName); + await this.createNetworkInputs.nth(1).fill(networkConfig.rpcUrl); await this.createNetworkInputs.nth(1).blur(); // wait for autofill by wallet const chainIdInputValue = await this.createNetworkInputs .nth(2) .getAttribute('value', { timeout: 2000 }); - if (chainIdInputValue !== String(chainId)) { - await this.createNetworkInputs.nth(2).fill(String(chainId)); + if (chainIdInputValue !== String(networkConfig.chainId)) { + await this.createNetworkInputs + .nth(2) + .fill(String(networkConfig.chainId)); } // wait for autofill by wallet const tokenSymbolInputValue = await this.createNetworkInputs .nth(3) .getAttribute('value', { timeout: 2000 }); - if (tokenSymbolInputValue !== tokenSymbol) { - await this.createNetworkInputs.nth(3).fill(tokenSymbol); + if (tokenSymbolInputValue !== networkConfig.tokenSymbol) { + await this.createNetworkInputs.nth(3).fill(networkConfig.tokenSymbol); } - await this.createNetworkInputs.nth(4).fill(scan); + await this.createNetworkInputs.nth(4).fill(networkConfig.scan); while (!(await this.saveNetworkButton.isEnabled())) { // wait for Save button to be enabled await this.page.waitForTimeout(1000); @@ -130,13 +127,4 @@ export class NetworkList { await this.page.waitForTimeout(2000); }); } - - async getWalletNetwork() { - return await this.page - .locator('.okds-success-circle-fill') - .locator('../..') - .locator('div') - .nth(2) - .textContent(); - } } diff --git a/packages/wallets/src/trustwallet/trustWalletPage.ts b/packages/wallets/src/trustwallet/trustWalletPage.ts index bc0b832e..a72f61b8 100644 --- a/packages/wallets/src/trustwallet/trustWalletPage.ts +++ b/packages/wallets/src/trustwallet/trustWalletPage.ts @@ -1,4 +1,4 @@ -import { WalletConfig } from '../wallets.constants'; +import { NetworkConfig, WalletConfig } from '../wallets.constants'; import { WalletPage } from '../wallet.page'; import expect from 'expect'; import { test, BrowserContext, Page } from '@playwright/test'; @@ -78,12 +78,7 @@ export class TrustWalletPage implements WalletPage { }); } - async addNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - ) { + async addNetwork(networkConfig: NetworkConfig) { await test.step('Add network', async () => { if (!this.page) throw "Page isn't ready"; await this.navigate(); @@ -91,10 +86,22 @@ export class TrustWalletPage implements WalletPage { await this.page.click('text=Network'); await this.page.click('text=Add a network'); await this.page.click('button:has-text("Add custom network")'); - await this.page.fill('input[placeholder="Network name"]', networkName); - await this.page.fill('input[placeholder="RPC URL"]', networkUrl); - await this.page.fill('input[placeholder="Chain ID"]', String(chainId)); - await this.page.fill('input[placeholder="Token symbol"]', tokenSymbol); + await this.page.fill( + 'input[placeholder="Network name"]', + networkConfig.chainName, + ); + await this.page.fill( + 'input[placeholder="RPC URL"]', + networkConfig.rpcUrl, + ); + await this.page.fill( + 'input[placeholder="Chain ID"]', + String(networkConfig.chainId), + ); + await this.page.fill( + 'input[placeholder="Token symbol"]', + networkConfig.tokenSymbol, + ); await this.page.click('button:has-text("Add custom network")'); await this.navigate(); }); @@ -105,10 +112,9 @@ export class TrustWalletPage implements WalletPage { await this.navigate(); if (!this.page) throw "Page isn't ready"; await this.page.click('id="manage-tokens-button"'); - await this.page.type( - 'input[placeholder="Token name or contract address"]', - token, - ); + await this.page + .locator('input[placeholder="Token name or contract address"]') + .fill(token); }); } @@ -133,12 +139,15 @@ export class TrustWalletPage implements WalletPage { }); } - // eslint-disable-next-line - async signTx(page: Page) {} + async signTx() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async assertReceiptAddress(page: Page, expectedAddress: string) {} + async assertReceiptAddress() { + throw new Error('Method not implemented.'); + } - // eslint-disable-next-line - async importKey(key: string) {} + async importKey() { + throw new Error('Method not implemented.'); + } } diff --git a/packages/wallets/src/wallet.page.ts b/packages/wallets/src/wallet.page.ts index e974edd5..716d62ec 100644 --- a/packages/wallets/src/wallet.page.ts +++ b/packages/wallets/src/wallet.page.ts @@ -1,5 +1,5 @@ import { Page } from '@playwright/test'; -import { WalletConfig } from './wallets.constants'; +import { NetworkConfig, WalletConfig } from './wallets.constants'; export interface WalletPage { page: Page | undefined; @@ -32,11 +32,7 @@ export interface WalletPage { setupNetwork?(standConfig: Record): Promise; addNetwork( - networkName: string, - networkUrl: string, - chainId: number, - tokenSymbol: string, - blockExplorer?: string, + networkConfig: NetworkConfig, isClosePage?: boolean, ): Promise; diff --git a/packages/wallets/src/wallets.constants.ts b/packages/wallets/src/wallets.constants.ts index 2204c267..110aded3 100644 --- a/packages/wallets/src/wallets.constants.ts +++ b/packages/wallets/src/wallets.constants.ts @@ -14,3 +14,161 @@ export interface WalletConfig { COMMON: CommonWalletConfig; EXTENSION_PATH?: string; } + +export interface NetworkConfig { + chainId: number; + chainName: string; + tokenSymbol: string; + rpcUrl: string; + scan: string; +} + +type MainnetNetworks = + | 'ETHEREUM' + | 'OPTIMISM' + | 'SONEIUM' + | 'ZKSYNC' + | 'ARBITRUM' + | 'POLYGON' + | 'BASE' + | 'BNB' + | 'LINEA' + | 'MANTLE' + | 'SCROLL' + | 'MODE' + | 'ZIRCUIT'; + +export type TestnetNetworks = + | 'ETHEREUM_HOLESKY' + | 'ETHEREUM_SEPOLIA' + | 'OP_SEPOLIA' + | 'SONEIUM_MINATO'; + +export const NETWORKS_CONFIG: { + Mainnet: Record; + Testnet: Record; +} = { + Mainnet: { + ETHEREUM: { + chainId: 1, + chainName: 'Ethereum Mainnet', + tokenSymbol: 'ETH', + rpcUrl: 'https://rpc.ankr.com/eth', + scan: 'https://etherscan.io/', + }, + OPTIMISM: { + chainId: 10, + chainName: 'OP Mainnet', + tokenSymbol: 'ETH', + rpcUrl: 'https://rpc.ankr.com/optimism', + scan: '', + }, + SONEIUM: { + chainId: 1868, + chainName: 'Soneium', + tokenSymbol: 'ETH', + rpcUrl: 'https://rpc.soneium.org/', + scan: 'https://soneium-minato.blockscout.com/', + }, + ZKSYNC: { + chainId: 324, + chainName: 'zkSync Era Mainnet', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + ARBITRUM: { + chainId: 42161, + chainName: 'Arbitrum One', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + POLYGON: { + chainId: 137, + chainName: 'Polygon Mainnet', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + BASE: { + chainId: 8453, + chainName: 'Base Mainnet', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + BNB: { + chainId: 56, + chainName: 'Binance Smart Chain', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + LINEA: { + chainId: 59144, + chainName: 'Linea', + tokenSymbol: 'ETH', + rpcUrl: null, + scan: '', + }, + MANTLE: { + chainId: 5000, + chainName: 'Mantle Mainnet', + tokenSymbol: 'MNT', + rpcUrl: 'https://rpc-moon.mantle.xyz/v1/NTQ3ODk1ZDdiOWRmODIyM2FiM2Y5YTVh', + scan: '', + }, + SCROLL: { + chainId: 534352, + chainName: 'Scroll Mainnet', + tokenSymbol: 'ETH', + rpcUrl: 'https://rpc.scroll.io', + scan: '', + }, + MODE: { + chainId: 34443, + chainName: 'Mode', + tokenSymbol: 'ETH', + rpcUrl: 'https://mainnet.mode.network', + scan: '', + }, + ZIRCUIT: { + chainId: 48900, + chainName: 'Zircuit', + tokenSymbol: 'ETH', + rpcUrl: 'https://zircuit1-mainnet.p2pify.com', + scan: '', + }, + }, + Testnet: { + ETHEREUM_HOLESKY: { + chainId: 17000, + chainName: 'Ethereum Holesky', + tokenSymbol: 'ETH', + rpcUrl: 'https://holesky.drpc.org', + scan: 'https://holesky.etherscan.io/', + }, + ETHEREUM_SEPOLIA: { + chainId: 11155111, + chainName: 'Ethereum Sepolia', + tokenSymbol: 'ETH', + rpcUrl: 'https://sepolia.drpc.org', + scan: 'https://sepolia.etherscan.io/', + }, + OP_SEPOLIA: { + chainId: 11155420, + chainName: 'OP Sepolia', + tokenSymbol: 'ETH', + rpcUrl: 'https://sepolia.optimism.io', + scan: 'https://sepolia-optimism.etherscan.io/', + }, + SONEIUM_MINATO: { + chainId: 1946, + chainName: 'Soneium Testnet Minato', + tokenSymbol: 'ETH', + rpcUrl: 'https://rpc.minato.soneium.org/', + scan: 'https://soneium-minato.blockscout.com/', + }, + }, +}; diff --git a/wallets-testing/browser/browser.service.ts b/wallets-testing/browser/browser.service.ts index 106a32f5..ce999e7f 100644 --- a/wallets-testing/browser/browser.service.ts +++ b/wallets-testing/browser/browser.service.ts @@ -56,12 +56,13 @@ export class BrowserService { ); } await this.walletPage.importKey(this.account.secretKey); - await this.walletPage.addNetwork( - this.widgetConfig.chainName, - this.ethereumNodeService.state.nodeUrl, - this.widgetConfig.chainId, - this.widgetConfig.tokenSymbol, - ); + await this.walletPage.addNetwork({ + chainName: this.widgetConfig.chainName, + rpcUrl: this.ethereumNodeService.state.nodeUrl, + chainId: this.widgetConfig.chainId, + tokenSymbol: this.widgetConfig.tokenSymbol, + scan: '', + }); await this.browserContextService.closePages(); } @@ -95,12 +96,13 @@ export class BrowserService { await this.browserContextService.closePages(); await this.walletPage.setup(this.widgetConfig.networkName); if (!this.widgetConfig.isDefaultNetwork) - await this.walletPage.addNetwork( - this.widgetConfig.chainName, - this.widgetConfig.nodeUrl, - this.widgetConfig.chainId, - this.widgetConfig.tokenSymbol, - ); + await this.walletPage.addNetwork({ + chainName: this.widgetConfig.chainName, + rpcUrl: this.widgetConfig.nodeUrl, + chainId: this.widgetConfig.chainId, + tokenSymbol: this.widgetConfig.tokenSymbol, + scan: '', + }); await this.browserContextService.closePages(); }