Skip to content

Commit

Permalink
Merge branch 'master' into update-ethers
Browse files Browse the repository at this point in the history
  • Loading branch information
nezouse authored May 17, 2024
2 parents 1776e67 + bce5650 commit 0a0fddf
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 37 deletions.
28 changes: 17 additions & 11 deletions packages/docs/playwright/with-metamask.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,33 +80,34 @@ describe(`Browser: ${browserType.name()} with Metamask`, () => {
})

const popupPromise = waitForPopup(context)
await page.click(XPath.text('button', 'Switch to Goerli'))
await page.click(XPath.text('button', 'Switch to Sepolia'))
const popupPage = await popupPromise
await popupPage.click(XPath.text('button', 'Switch network'))

await sleep(1000)
if (await page.isVisible(XPath.text('button', 'Connect with Metamask'))) {
await page.click(XPath.text('button', 'Connect with Metamask'))
}

await waitForExpect(async () => {
expect(await page.isVisible(`//*[text()='Current chain: ' and text()='5']`)).to.be.true
expect(await page.isVisible(`//*[text()='Current chain: ' and text()='11155111']`)).to.be.true
})
})

it('Add new network to Metamask', async () => {
await page.goto(`${baseUrl}Guides/Transactions/Switching%20Networks`)

await waitForExpect(async () => {
expect(await page.isVisible(`//*[text()='Current chain: ' and text()='5']`)).to.be.true
expect(await page.isVisible(`//*[text()='Current chain: ' and text()='11155111']`)).to.be.true
})

const popupPromise = waitForPopup(context)
await page.click(XPath.text('button', 'Switch to Optimism'))
const popupPage = await popupPromise

await sleep(2000) // Wait for the popup to be fully loaded.
expect(
// if this link is visible, then the network does not match metamask records
await popupPage.isVisible(`//a[@href='https://metamask.zendesk.com/hc/en-us/articles/360057142392']`)
).to.be.false

await popupPage.click(XPath.text('a', 'View all'))
await popupPage.click(XPath.text('a', 'View all details'))
await waitForExpect(async () => {
expect(await popupPage.isVisible(`//*[text()='${Optimism.chainName}']`)).to.be.true
expect(await popupPage.isVisible(`//*[text()='${Optimism.rpcUrl}']`)).to.be.true
Expand Down Expand Up @@ -149,7 +150,7 @@ describe(`Browser: ${browserType.name()} with Metamask`, () => {
let popupPage = await popupPromise
await popupPage.click(XPath.text('button', 'Sign'))
await waitForExpect(async () => {
expect(await page.isVisible(`//*[text()='ChainId: ' and text()='5']`)).to.be.true
expect(await page.isVisible(`//*[text()='ChainId: ' and text()='11155111']`)).to.be.true
})

await metamask.switchToNetwork('Ethereum Mainnet')
Expand All @@ -167,10 +168,15 @@ describe(`Browser: ${browserType.name()} with Metamask`, () => {
expect(await page.isVisible(`//*[text()='Not logged in']`)).to.be.true
})

await metamask.switchToNetwork('Goerli Test Network')
await metamask.switchToNetwork('Sepolia Test Network')

await sleep(1000)
if (await page.isVisible(XPath.text('button', 'Connect with Metamask'))) {
await page.click(XPath.text('button', 'Connect with Metamask'))
}

await waitForExpect(async () => {
expect(await page.isVisible(`//*[text()='ChainId: ' and text()='5']`)).to.be.true
expect(await page.isVisible(`//*[text()='ChainId: ' and text()='11155111']`)).to.be.true
})
})
})
Expand Down
4 changes: 2 additions & 2 deletions packages/docs/src/examples/Siwe.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react'
import ReactDOM from 'react-dom'
import { Mainnet, DAppProvider, useEthers, Config, Goerli } from '@usedapp/core'
import { Mainnet, DAppProvider, useEthers, Config, Sepolia } from '@usedapp/core'
import { getDefaultProvider } from 'ethers'
import { SiweProvider, useSiwe } from '@usedapp/siwe'

Expand All @@ -12,7 +12,7 @@ const config: Config = {
readOnlyChainId: Mainnet.chainId,
readOnlyUrls: {
[Mainnet.chainId]: getDefaultProvider('mainnet'),
[Goerli.chainId]: getDefaultProvider('goerli'),
[Sepolia.chainId]: 'https://rpc2.sepolia.org',
},
}

Expand Down
8 changes: 4 additions & 4 deletions packages/docs/src/examples/SwitchingNetworks.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import React from 'react'
import ReactDOM from 'react-dom'
import { DAppProvider, useSendTransaction, useEthers, Config, Goerli, Mainnet, Optimism } from '@usedapp/core'
import { DAppProvider, useSendTransaction, useEthers, Config, Mainnet, Optimism, Sepolia } from '@usedapp/core'
import { getDefaultProvider } from 'ethers'

const config: Config = {
readOnlyChainId: Mainnet.chainId,
readOnlyUrls: {
[Mainnet.chainId]: getDefaultProvider('mainnet'),
[Optimism.chainId]: getDefaultProvider('optimism'),
[Goerli.chainId]: getDefaultProvider('goerli'),
[Sepolia.chainId]: 'https://rpc2.sepolia.org',
},
}

Expand Down Expand Up @@ -45,8 +45,8 @@ export function App() {
</button>
}{' '}
{
<button onClick={() => switchNetwork(Goerli.chainId)} disabled={chainId === Goerli.chainId}>
Switch to Goerli
<button onClick={() => switchNetwork(Sepolia.chainId)} disabled={chainId === Sepolia.chainId}>
Switch to Sepolia
</button>
}
</div>
Expand Down
12 changes: 5 additions & 7 deletions packages/example/playwright/with-metamask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,21 +276,19 @@ export const withMetamaskTest = (baseUrl: string) => {

await waitForExpect(async () => {
expect(await page.isVisible(XPath.text('span', 'Mainnet'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Goerli'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Optimism'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Optimism Goerli'))).to.be.true
})
})

it('Check if all chains were loaded', async () => {
await page.goto(`${baseUrl}multichain`)

await waitForExpect(async () => {
expect(await page.isVisible(XPath.text('span', 'Chain id:', 4))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current block timestamp:', 4))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current difficulty:', 4))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current block:', 4))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Ether balance:', 4))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Chain id:', 2))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current block timestamp:', 2))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current difficulty:', 2))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Current block:', 2))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Ether balance:', 2))).to.be.true
})
})
})
Expand Down
2 changes: 0 additions & 2 deletions packages/example/playwright/without-metamask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ export const withoutMetamaskTest = (baseUrl: string) => {

await waitForExpect(async () => {
expect(await page.isVisible(XPath.text('span', 'Mainnet'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Goerli'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Optimism'))).to.be.true
expect(await page.isVisible(XPath.text('span', 'Optimism Goerli'))).to.be.true
})
})

Expand Down
10 changes: 2 additions & 8 deletions packages/example/src/entrypoint.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import {
Localhost,
MetamaskConnector,
CoinbaseWalletConnector,
Goerli,
OptimismGoerli,
Optimism,
} from '@usedapp/core'
import { App } from './App'
Expand All @@ -18,11 +16,8 @@ import { getDefaultProvider } from '@ethersproject/providers'

const readOnlyUrls: Config['readOnlyUrls'] = {
[Mainnet.chainId]: process.env.MAINNET_URL || getDefaultProvider('mainnet'),
[Goerli.chainId]: process.env.MAINNET_URL
? process.env.MAINNET_URL.replace('mainnet', 'goerli')
: getDefaultProvider('goerli'),
[Optimism.chainId]: 'https://mainnet.optimism.io',
[OptimismGoerli.chainId]: 'https://goerli.optimism.io',
[Localhost.chainId]: 'http://localhost:8545',
}

if (process.env.LOCALHOST_URL) {
Expand All @@ -45,8 +40,7 @@ const config: Config = {
projectId: 'bffbe493c0928ee125dc8f23e20167b7',
chains: [Mainnet],
rpcMap: {
1: 'https://mainnet.infura.io/v3/d8df2cb7844e4a54ab0a782f608749dd',
5: 'https://goerli.infura.io/v3/d8df2cb7844e4a54ab0a782f608749dd',
[Mainnet.chainId]: 'https://mainnet.infura.io/v3/d8df2cb7844e4a54ab0a782f608749dd',
},
}),
},
Expand Down
4 changes: 2 additions & 2 deletions packages/example/src/pages/Multichain.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React from 'react'
import { Container, MainContent, Section, SectionRow } from '../components/base/base'
import { Goerli, Mainnet, Optimism, OptimismGoerli } from '@usedapp/core'
import { Mainnet, Optimism } from '@usedapp/core'
import { ChainState } from '../components/ChainState'
import { Title } from '../typography/Title'
import styled from 'styled-components'

const chains = [Mainnet.chainId, Goerli.chainId, Optimism.chainId, OptimismGoerli.chainId]
const chains = [Mainnet.chainId, Optimism.chainId]

export const Multichain = () => {
return (
Expand Down
21 changes: 20 additions & 1 deletion packages/playwright/src/metamask/MetaMask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ export class MetaMask {
log('Metamask account connected to pages.')
}

async switchToNetwork(network: 'Ethereum Mainnet' | 'Localhost 8545' | 'Goerli Test Network') {
async switchToNetwork(
network: 'Ethereum Mainnet' | 'Localhost 8545' | 'Goerli Test Network' | 'Sepolia Test Network'
) {
log('Switching network...')
await this.gotoMetamask()
await this.page.click('.network-display--clickable') // Network popup menu on the top right.
Expand Down Expand Up @@ -104,6 +106,23 @@ export class MetaMask {

await this.page.click('//button[@title="Close"]') // Close "What's new" section.
log('Metamask activated.')

log('Add Sepolia')
await this.page.goto(
'chrome-extension://' + (await this.getExtensionId()) + '//home.html#settings/networks/add-network'
)

await this.page.locator('input').locator('nth=1').fill('Sepolia Test Network')
await this.page.locator('input').locator('nth=2').fill('https://rpc2.sepolia.org')
await this.page.locator('input').locator('nth=3').fill('11155111')
await this.page.locator('input').locator('nth=4').fill('ETH')
await this.page.click(XPath.text('button', 'Save'))

log('Sepolia added')

log('Switch back to mainnet')
await this.switchToNetwork('Ethereum Mainnet')
log('Switched back to mainnet')
}

async switchWallet(index: number) {
Expand Down

0 comments on commit 0a0fddf

Please sign in to comment.