UNPKG

idquia

Version:

Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, mul

79 lines (68 loc) 3.19 kB
import { metamaskTest, expect } from './fixtures' import * as metamask from '@synthetixio/synpress/commands/metamask' import * as playwright from '@synthetixio/synpress/commands/playwright' let sharedPage let sharedContext metamaskTest.describe.configure({ mode: 'serial' }) const connectMetamask = async page => { await page.getByRole('button', { name: 'Connect Wallet' }).click() await page.getByRole('checkbox').click() await page.getByText('Metamask').click() await metamask.acceptAccess() } metamaskTest.beforeAll(async ({ page, context }) => { sharedPage = page sharedContext = context await sharedPage.goto('http://localhost:8080') await connectMetamask(sharedPage) }) metamaskTest('metamask connected', async () => { await expect(sharedPage.getByTestId('MetaMask')).toHaveText('MetaMask') // Check to make sure connected to goerli await expect(sharedPage.getByTestId('chains')).toHaveText( 'Chains: [ { "namespace": "evm", "id": "0x5" } ]' ) }) metamaskTest('metamask sign message', async () => { const messageText = 'a new message' const message = sharedPage.getByPlaceholder('Message...') await message.fill(messageText) await sharedPage.getByRole('button', { name: 'Sign Message' }).click() const notificationPage = await playwright.switchToMetamaskNotification() await expect(notificationPage.getByText(messageText)).toBeDefined() await notificationPage.getByTestId('page-container-footer-next').click() }) metamaskTest('metamask sign typed message', async () => { await sharedPage.getByRole('button', { name: 'Sign Typed Message' }).click() const notificationPage = await playwright.switchToMetamaskNotification() await expect(notificationPage.getByText('Hello, Bob!')).toBeDefined() await notificationPage.getByTestId('signature-request-scroll-button').click() await notificationPage.getByTestId('page-container-footer-next').click() }) metamaskTest('send Transaction', async () => { const address = process.env.TEST_WALLET_ADDRESS const input = sharedPage.getByTestId('sendTransaction') await input.fill(address) await sharedPage.getByRole('button', { name: 'Send Transaction' }).click() const notificationPage = await playwright.switchToMetamaskNotification() await notificationPage.getByTestId('page-container-footer-next').click() await sharedPage.waitForTimeout(3000) await expect( sharedPage.getByText('Your account successfully received 0.00001 ETH from') ).toBeDefined() }) metamaskTest('switch chains', async () => { await sharedPage.getByRole('button', { name: 'Set Chain to Mainnet' }).click() const notificationPage = await playwright.switchToMetamaskNotification() await notificationPage.getByRole('button', { name: 'Switch network' }).click() await sharedPage.waitForTimeout(3000) await expect(sharedPage.getByTestId('chains')).toHaveText( 'Chains: [ { "namespace": "evm", "id": "0x1" } ]' ) }) metamaskTest('disconnect metamask', async () => { await sharedPage.getByRole('button', { name: 'Disconnect Wallet' }).click() await sharedPage.waitForTimeout(3000) await expect(sharedPage.getByTestId('connected-wallet')).toHaveCount(0) sharedContext.close() })