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
text/typescript
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()
})