('eip155')
- const tabs: ChainNamespace[] = ['eip155', 'solana', 'bip122', 'ton']
- const icons: React.ReactNode[] = [, , , ]
+ const tabs: ChainNamespace[] = ['eip155', 'solana', 'bip122']
+ const icons: React.ReactNode[] = [, , ]
function handleTabClick(tab: ChainNamespace) {
setActiveTab(tab)
onTabClick(tab)
}
- function getTabLabel(tab: ChainNamespace) {
- const label = ConstantsUtil.CHAIN_NAME_MAP[tab] || tab
-
- return label.replaceAll('EVM Networks', 'EVM')
- }
-
return (
void }) {
})}
>
{icons[index]}
- {activeTab === tab && getTabLabel(tab)}
+ {ConstantsUtil.CHAIN_NAME_MAP[tab].replaceAll('EVM Networks', 'Ethereum')}
))}
diff --git a/apps/browser-extension/src/components/Token/index.tsx b/apps/browser-extension/src/components/Token/index.tsx
index d0b4a42405..cab9f70c51 100644
--- a/apps/browser-extension/src/components/Token/index.tsx
+++ b/apps/browser-extension/src/components/Token/index.tsx
@@ -39,11 +39,6 @@ const tokens: Record {
const connection = new Connection(clusterApiUrl('mainnet-beta'))
const wallet = new PublicKey(account)
@@ -28,27 +27,6 @@ export function useBalance(chain: ChainNamespace, account: string) {
enabled: chain === 'solana'
})
- const { data: tonBalance = 0 } = useQuery({
- queryKey: ['ton-balance', account],
- queryFn: async () => {
- try {
- const client = new TonClient({
- endpoint: 'https://testnet.toncenter.com/api/v2/jsonRPC'
- })
- const { Address } = await import('@ton/ton')
- const address = Address.parse(account)
- const balance = await client.getBalance(address)
-
- // TON uses 9 decimals
- // eslint-disable-next-line new-cap
- return Big(balance.toString()).div(1e9).toNumber()
- } catch {
- return 0
- }
- },
- enabled: chain === 'ton' && account !== ''
- })
-
function getBalance() {
switch (chain) {
case 'eip155':
@@ -57,8 +35,6 @@ export function useBalance(chain: ChainNamespace, account: string) {
return solanaBalance.toString()
case 'bip122':
return '0'
- case 'ton':
- return tonBalance.toString()
default:
return '0'
}
diff --git a/apps/browser-extension/src/inpage.ts b/apps/browser-extension/src/inpage.ts
index e6215fd2e9..24925c10f0 100644
--- a/apps/browser-extension/src/inpage.ts
+++ b/apps/browser-extension/src/inpage.ts
@@ -5,22 +5,11 @@ import { v4 as uuidv4 } from 'uuid'
import { BitcoinProvider } from './core/BitcoinProvider'
import { EvmProvider } from './core/EvmProvider'
import { SolanaProvider } from './core/SolanaProvider'
-import { TonProvider } from './core/TonProvider'
import { ConstantsUtil } from './utils/ConstantsUtil'
const evmProvider = new EvmProvider()
const solanaProvider = new SolanaProvider()
const bitcoinProvider = new BitcoinProvider()
-const tonProvider = new TonProvider()
-
-// Inject TON provider into window for TonConnect
-;(
- window as unknown as {
- reownTon: { tonconnect: ReturnType }
- }
-).reownTon = {
- tonconnect: tonProvider.createTonConnectInterface(ConstantsUtil.IconRaw)
-}
announceProvider({
info: {
diff --git a/apps/browser-extension/src/pages/Home/index.tsx b/apps/browser-extension/src/pages/Home/index.tsx
index ca58a03bf7..126347b9ba 100644
--- a/apps/browser-extension/src/pages/Home/index.tsx
+++ b/apps/browser-extension/src/pages/Home/index.tsx
@@ -4,7 +4,6 @@ import { Keypair } from '@solana/web3.js'
import Big from 'big.js'
import { privateKeyToAccount } from 'viem/accounts'
-import { toUserFriendlyAddress } from '@reown/appkit-adapter-ton/utils'
import { ChainNamespace } from '@reown/appkit-common'
import { Box } from '../../components/Box'
@@ -14,7 +13,6 @@ import { Text } from '../../components/Text'
import { Token } from '../../components/Token'
import { Zorb } from '../../components/Zorb'
import { BitcoinProvider } from '../../core/BitcoinProvider'
-import { TonProvider } from '../../core/TonProvider'
import { useBalance } from '../../hooks/useBalance'
import { AccountUtil } from '../../utils/AccountUtil'
import { HelperUtil } from '../../utils/HelperUtil'
@@ -29,9 +27,6 @@ const publicKey = keypair.publicKey
// Bitcoin
const bitcoinProvider = new BitcoinProvider()
-// TON
-const tonProvider = new TonProvider()
-
export function Home() {
const [copied, setCopied] = useState(false)
const [page, setPage] = useState('eip155')
@@ -50,8 +45,6 @@ export function Home() {
return publicKey.toString()
case 'bip122':
return bitcoinProvider.accounts[0].address
- case 'ton':
- return toUserFriendlyAddress(tonProvider.getAddress())
default:
return ''
}
@@ -74,9 +67,6 @@ export function Home() {
case 'bip122':
window.open(`https://btcscan.org/address/${account}`, '_blank')
break
- case 'ton':
- window.open(`https://tonscan.org/address/${account}`, '_blank')
- break
default:
break
}
diff --git a/apps/browser-extension/src/utils/AccountUtil.ts b/apps/browser-extension/src/utils/AccountUtil.ts
index 460140c00f..8f2cdda070 100644
--- a/apps/browser-extension/src/utils/AccountUtil.ts
+++ b/apps/browser-extension/src/utils/AccountUtil.ts
@@ -5,6 +5,5 @@ export const AccountUtil = {
privateKeySolana: new Uint8Array(
(process.env.SOLANA_PRIVATE_KEY as string).split(',') as unknown as number[]
),
- privateKeyBitcoin: process.env.BIP122_PRIVATE_KEY,
- privateKeyTon: process.env.TON_PRIVATE_KEY_1 as string
+ privateKeyBitcoin: process.env.BIP122_PRIVATE_KEY
}
diff --git a/apps/demo/package.json b/apps/demo/package.json
index 10f7d28e45..94fbb6a976 100644
--- a/apps/demo/package.json
+++ b/apps/demo/package.json
@@ -21,61 +21,61 @@
"@dnd-kit/modifiers": "8.0.0",
"@dnd-kit/sortable": "9.0.0",
"@dnd-kit/utilities": "3.2.2",
- "@hookform/resolvers": "3.9.0",
- "@next/third-parties": "15.2.1",
+ "@hookform/resolvers": "3.10.0",
+ "@next/third-parties": "15.5.9",
"@radix-ui/react-checkbox": "1.3.3",
"@radix-ui/react-dialog": "1.1.15",
"@radix-ui/react-icons": "1.3.2",
- "@radix-ui/react-label": "2.1.7",
+ "@radix-ui/react-label": "2.1.8",
"@radix-ui/react-radio-group": "1.3.8",
"@radix-ui/react-select": "2.2.6",
- "@radix-ui/react-separator": "1.1.7",
+ "@radix-ui/react-separator": "1.1.8",
"@radix-ui/react-slider": "1.3.6",
- "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-slot": "1.2.4",
"@radix-ui/react-switch": "1.2.6",
"@radix-ui/react-tabs": "1.1.13",
"@radix-ui/react-tooltip": "1.2.8",
- "@reown/appkit": "1.8.0",
- "@reown/appkit-adapter-bitcoin": "1.8.0",
- "@reown/appkit-adapter-ethers": "1.8.0",
- "@reown/appkit-adapter-solana": "1.8.0",
- "@reown/appkit-common": "1.8.0",
- "@reown/appkit-controllers": "1.8.0",
- "@reown/appkit-scaffold-ui": "1.8.0",
- "@reown/appkit-ui": "1.8.0",
+ "@reown/appkit": "1.8.15",
+ "@reown/appkit-adapter-bitcoin": "1.8.15",
+ "@reown/appkit-adapter-ethers": "1.8.15",
+ "@reown/appkit-adapter-solana": "1.8.15",
+ "@reown/appkit-common": "1.8.15",
+ "@reown/appkit-controllers": "1.8.15",
+ "@reown/appkit-scaffold-ui": "1.8.15",
+ "@reown/appkit-ui": "1.8.15",
"@sentry/core": "8.55.0",
"@sentry/nextjs": "8.55.0",
"@solana/web3.js": "1.98.4",
- "@tanstack/react-query": "5.75.5",
- "@wagmi/core": "2.21.2",
- "autoprefixer": "10.4.21",
+ "@tanstack/react-query": "5.90.12",
+ "@wagmi/core": "2.20.3",
+ "autoprefixer": "10.4.23",
"class-variance-authority": "0.7.1",
"classnames": "2.5.1",
"clsx": "2.1.1",
"ethers": "6.14.0",
- "next": "14.2.32",
+ "next": "14.2.35",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
+ "react": "19.2.3",
+ "react-dom": "19.2.3",
"sonner": "1.7.4",
"tailwind-merge": "2.6.0",
"tailwindcss-animate": "1.0.7",
- "viem": "2.37.9",
- "wagmi": "2.17.5",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9",
"valtio": "2.1.7"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.2.7",
+ "@types/react-dom": "19.2.3",
"@mailsac/api": "1.0.8",
- "@reown/appkit-testing": "1.8.0",
+ "@reown/appkit-testing": "1.8.4",
"@playwright/test": "1.48.2",
"eslint": "8.56.0",
"eslint-config-next": "14.1.0",
"dotenv": "16.4.7",
"postcss": "8.5.3",
- "tailwindcss": "3.4.17",
- "typescript": "5.9.2"
+ "tailwindcss": "3.4.1",
+ "typescript": "5.8.3"
}
}
diff --git a/apps/demo/sentry.client.config.ts b/apps/demo/sentry.client.config.ts
index 60cf506e4e..3d14cfc768 100644
--- a/apps/demo/sentry.client.config.ts
+++ b/apps/demo/sentry.client.config.ts
@@ -8,7 +8,7 @@ Sentry.init({
sampleRate: 0.5,
// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
- tracesSampleRate: 0.01,
+ tracesSampleRate: 0.2,
ignoreErrors: [
"Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.",
diff --git a/apps/demo/tests/utils/email.ts b/apps/demo/tests/utils/email.ts
index 4b1e409348..20c3c060b2 100644
--- a/apps/demo/tests/utils/email.ts
+++ b/apps/demo/tests/utils/email.ts
@@ -50,23 +50,9 @@ export class Email {
}
async getEmailBody(email: string, messageId: string): Promise {
- let checks = 0
- /* eslint-disable no-await-in-loop */
- while (checks < MAX_EMAIL_CHECK) {
- try {
- const result = await this.mailsac.messages.getBodyPlainText(email, messageId)
-
- return String(result.data)
- } catch (error) {
- if (checks < MAX_EMAIL_CHECK - 1) {
- await this.timeout(EMAIL_CHECK_INTERVAL)
- checks += 1
- } else {
- throw error
- }
- }
- }
- throw new Error(`Could not retrieve email body for message ${messageId}`)
+ const result = await this.mailsac.messages.getBodyPlainText(email, messageId)
+
+ return String(result.data)
}
isApproveEmail(body: string): boolean {
diff --git a/apps/gallery/.storybook/main.ts b/apps/gallery/.storybook/main.ts
index 7188084ab7..492ddb6331 100644
--- a/apps/gallery/.storybook/main.ts
+++ b/apps/gallery/.storybook/main.ts
@@ -1,12 +1,7 @@
/** @type { import('@storybook/web-components-vite').StorybookConfig } */
export default {
stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'],
- addons: [
- '@storybook/addon-links',
- '@storybook/addon-docs',
- 'storybook/addon-essentials',
- '@chromatic-com/storybook'
- ],
+ addons: ['@storybook/addon-links', '@storybook/addon-docs', 'storybook/addon-essentials'],
core: {
disableTelemetry: true
},
diff --git a/apps/gallery/package.json b/apps/gallery/package.json
index be5474eb14..7dec7611c8 100644
--- a/apps/gallery/package.json
+++ b/apps/gallery/package.json
@@ -6,24 +6,21 @@
"scripts": {
"dev": "storybook dev -p 6006",
"build": "storybook build -o out",
- "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
- "chromatic": "chromatic"
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx"
},
"dependencies": {
"@reown/appkit-common": "workspace:*",
"@reown/appkit-ui": "workspace:*",
"@reown/appkit-scaffold-ui": "workspace:*",
"lit": "3.3.0",
- "react": "19.1.1",
+ "react": "19.1.0",
"storybook": "9.0.15"
},
"devDependencies": {
- "@chromatic-com/storybook": "4.1.1",
- "@storybook/addon-docs": "9.0.15",
"@storybook/addon-links": "9.0.15",
+ "@storybook/addon-docs": "9.0.15",
"@storybook/web-components": "9.0.15",
"@storybook/web-components-vite": "9.0.15",
- "chromatic": "13.3.0",
"file-system-cache": "2.4.7"
}
}
diff --git a/apps/gallery/stories/composites/appkit-wui-list-wallet.stories.ts b/apps/gallery/stories/composites/appkit-wui-list-wallet.stories.ts
index 1efa12adcb..392c440ee7 100644
--- a/apps/gallery/stories/composites/appkit-wui-list-wallet.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-list-wallet.stories.ts
@@ -3,7 +3,6 @@ import type { Meta } from '@storybook/web-components'
import { html } from 'lit'
import { ifDefined } from 'lit/directives/if-defined.js'
-import '@reown/appkit-ui/wui-list-wallet'
import type { WuiListWallet } from '@reown/appkit-ui/wui-list-wallet'
import '../../components/gallery-container'
@@ -21,8 +20,7 @@ export default {
disabled: false,
loading: false,
showAllWallets: false,
- size: 'md',
- namespaces: ['eip155', 'solana', 'bip122']
+ size: 'md'
},
argTypes: {
tagVariant: {
@@ -54,21 +52,16 @@ export default {
export const Default: Component = {
render: args =>
- html`
-
-
-
-
-
+ html`
+
`
}
diff --git a/apps/gallery/stories/composites/appkit-wui-loading-hexagon.stories.ts b/apps/gallery/stories/composites/appkit-wui-loading-hexagon.stories.ts
index eb38b9f5a4..36717919cd 100644
--- a/apps/gallery/stories/composites/appkit-wui-loading-hexagon.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-loading-hexagon.stories.ts
@@ -8,10 +8,7 @@ import type { WuiLoadingHexagon } from '@reown/appkit-ui/wui-loading-hexagon'
type Component = Meta
export default {
- title: 'Composites/appkit-wui-loading-hexagon',
- parameters: {
- chromatic: { disableSnapshot: true }
- }
+ title: 'Composites/appkit-wui-loading-hexagon'
} as Component
export const Default: Component = {
diff --git a/apps/gallery/stories/composites/appkit-wui-loading-spinner.stories.ts b/apps/gallery/stories/composites/appkit-wui-loading-spinner.stories.ts
index 4a1c6c0f62..d3c2cd60d5 100644
--- a/apps/gallery/stories/composites/appkit-wui-loading-spinner.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-loading-spinner.stories.ts
@@ -11,9 +11,6 @@ type Component = Meta
export default {
title: 'Composites/appkit-wui-loading-spinner',
- parameters: {
- chromatic: { disableSnapshot: true }
- },
args: {
color: 'accent-primary',
size: 'lg'
diff --git a/apps/gallery/stories/composites/appkit-wui-loading-thumbnail.stories.ts b/apps/gallery/stories/composites/appkit-wui-loading-thumbnail.stories.ts
index c925f22232..99861d3f03 100644
--- a/apps/gallery/stories/composites/appkit-wui-loading-thumbnail.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-loading-thumbnail.stories.ts
@@ -9,9 +9,6 @@ type Component = Meta
export default {
title: 'Composites/appkit-wui-loading-thumbnail',
- parameters: {
- chromatic: { disableSnapshot: true }
- },
args: {
radius: 36
}
diff --git a/apps/gallery/stories/composites/appkit-wui-qr-code.stories.ts b/apps/gallery/stories/composites/appkit-wui-qr-code.stories.ts
index 4c2cb55632..eff896a49a 100644
--- a/apps/gallery/stories/composites/appkit-wui-qr-code.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-qr-code.stories.ts
@@ -11,9 +11,6 @@ type Component = Meta
export default {
title: 'Composites/appkit-wui-qr-code',
- parameters: {
- chromatic: { disableSnapshot: true }
- },
args: {
size: 318,
theme: 'dark',
diff --git a/apps/gallery/stories/composites/appkit-wui-select.stories.ts b/apps/gallery/stories/composites/appkit-wui-select.stories.ts
index dda94c4c08..6b42be21bf 100644
--- a/apps/gallery/stories/composites/appkit-wui-select.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-select.stories.ts
@@ -11,9 +11,6 @@ type Component = Meta
export default {
title: 'Composites/appkit-wui-select',
- parameters: {
- chromatic: { disableSnapshot: true }
- },
args: {
imageSrc: 'https://picsum.photos/200/300',
text: 'Text',
diff --git a/apps/gallery/stories/composites/appkit-wui-token-button.stories.ts b/apps/gallery/stories/composites/appkit-wui-token-button.stories.ts
index d2e42c2a56..1b9aa45494 100644
--- a/apps/gallery/stories/composites/appkit-wui-token-button.stories.ts
+++ b/apps/gallery/stories/composites/appkit-wui-token-button.stories.ts
@@ -28,9 +28,6 @@ export default {
imageSrc: {
control: { type: 'text' }
},
- chainImageSrc: {
- control: { type: 'text' }
- },
disabled: {
control: { type: 'boolean' }
}
@@ -42,7 +39,6 @@ export const Default: Component = {
html`
diff --git a/apps/laboratory/app/appkit/page.tsx b/apps/laboratory/app/appkit/page.tsx
index 887d12d407..5e1baf6b4f 100644
--- a/apps/laboratory/app/appkit/page.tsx
+++ b/apps/laboratory/app/appkit/page.tsx
@@ -11,7 +11,6 @@ import { WagmiProvider } from 'wagmi'
import { WagmiAdapter } from '@reown/appkit-adapter-wagmi'
import DemoContent from '@/src/components/DemoContent'
-import DemoContentHeadless from '@/src/components/Headless/DemoContentHeadless'
import { AppKitProvider } from '@/src/context/AppKitContext'
import { getAppKitAdapters, getAppKitConfigByName } from '@/src/utils/AppKitConfigUtil'
@@ -20,7 +19,6 @@ const queryClient = new QueryClient()
export default function Page() {
const searchParams = useSearchParams()
const config = getAppKitConfigByName(searchParams.get('name') || '')
- const isHeadless = searchParams.get('name') === 'headless'
if (!config) {
return (
@@ -46,7 +44,7 @@ export default function Page() {
- {isHeadless ? : }
+
diff --git a/apps/laboratory/middleware.ts b/apps/laboratory/middleware.ts
index 3a9c22bfb4..bd438fbf4f 100644
--- a/apps/laboratory/middleware.ts
+++ b/apps/laboratory/middleware.ts
@@ -25,7 +25,7 @@ export function middleware(request: NextRequest) {
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
img-src * 'self' data: blob: https://walletconnect.org https://walletconnect.com https://secure.walletconnect.com https://secure.walletconnect.org https://tokens-data.1inch.io https://tokens.1inch.io https://ipfs.io https://cdn.zerion.io https://appkit-lab.reown.org;
font-src 'self' https://fonts.gstatic.com https://fonts.reown.com;
- connect-src 'self' https://react-wallet.walletconnect.com https://rpc.walletconnect.com https://rpc.walletconnect.org https://relay.walletconnect.com https://relay.walletconnect.org wss://relay.walletconnect.com wss://relay.walletconnect.org https://pulse.walletconnect.com https://pulse.walletconnect.org https://api.web3modal.com https://api.reown.com https://api.web3modal.org wss://www.walletlink.org https://o1095249.ingest.sentry.io https://quote-api.jup.ag https://mempool.space https://cca-lite.coinbase.com https://registry.npmjs.org ${publicNodeDomains.join(' ')};
+ connect-src 'self' https://react-wallet.walletconnect.com https://rpc.walletconnect.com https://rpc.walletconnect.org https://relay.walletconnect.com https://relay.walletconnect.org wss://relay.walletconnect.com wss://relay.walletconnect.org https://pulse.walletconnect.com https://pulse.walletconnect.org https://api.web3modal.com https://api.web3modal.org wss://www.walletlink.org https://o1095249.ingest.sentry.io https://quote-api.jup.ag https://mempool.space https://cca-lite.coinbase.com https://registry.npmjs.org ${publicNodeDomains.join(' ')};
frame-src 'self' https://verify.walletconnect.com https://verify.walletconnect.org https://secure.walletconnect.com https://secure.walletconnect.org https://secure.reown.com ${secureSiteDomain};
object-src 'none';
base-uri 'self';
diff --git a/apps/laboratory/next-env.d.ts b/apps/laboratory/next-env.d.ts
index d60c52c0a7..d39ca30059 100644
--- a/apps/laboratory/next-env.d.ts
+++ b/apps/laboratory/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./out/types/routes.d.ts";
+///
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/laboratory/package.json b/apps/laboratory/package.json
index 6c4a721472..771ea9354a 100644
--- a/apps/laboratory/package.json
+++ b/apps/laboratory/package.json
@@ -6,7 +6,7 @@
"scripts": {
"dev": "next dev --turbopack",
"start": "next start",
- "build": "next build --turbopack",
+ "build": "next build",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
"typecheck": "tsc --noEmit",
"playwright:start": "pnpm start",
@@ -60,8 +60,6 @@
"playwright:test:multi-wallet-multichain": "HEADLESS=true playwright test --grep multi-wallet-multichain.spec.ts",
"playwright:debug:core-sign-client": "pnpm playwright:test:core-sign-client --debug",
"playwright:test:core": "playwright test --grep core.spec.ts",
- "playwright:test:headless": "playwright test --grep headless.spec.ts",
- "playwright:debug:headless": "pnpm playwright:test:headless --debug",
"playwright:debug:core": "pnpm playwright:test:core --debug",
"playwright:test:core-universal-provider": "playwright test --grep universal-provider.spec.ts",
"playwright:debug:siwx-email": "pnpm playwright:test:siwx-email --debug",
@@ -119,7 +117,6 @@
"@reown/appkit-adapter-ethers": "workspace:*",
"@reown/appkit-adapter-ethers5": "workspace:*",
"@reown/appkit-adapter-solana": "workspace:*",
- "@reown/appkit-adapter-ton": "workspace:*",
"@reown/appkit-adapter-wagmi": "workspace:*",
"@reown/appkit-common": "workspace:*",
"@reown/appkit-experimental": "workspace:*",
@@ -134,32 +131,31 @@
"@safe-global/safe-apps-sdk": "9.1.0",
"@sentry/browser": "7.120.3",
"@sentry/react": "7.120.3",
- "@solana/web3.js": "1.98.4",
+ "@solana/web3.js": "1.98.2",
"@tanstack/react-query": "5.75.5",
- "@wagmi/connectors": "5.11.2",
- "@wagmi/core": "2.21.2",
+ "@wagmi/connectors": "5.9.9",
+ "@wagmi/core": "2.20.3",
"@wallet-standard/app": "1.1.0",
- "@walletconnect/sign-client": "2.23.0",
- "@walletconnect/types": "2.23.0",
- "@walletconnect/universal-provider": "2.23.0",
- "@walletconnect/utils": "2.23.0",
- "axios": "1.12.2",
+ "@walletconnect/sign-client": "2.21.7",
+ "@walletconnect/types": "2.21.7",
+ "@walletconnect/universal-provider": "2.21.7",
+ "@walletconnect/utils": "2.21.7",
+ "axios": "1.9.0",
"bitcoinjs-lib": "7.0.0-rc.0",
"bs58": "6.0.0",
"date-fns": "4.1.0",
"ethers": "6.14.0",
"ethers5": "npm:ethers@5.8.0",
"framer-motion": "10.18.0",
- "next": "15.6.0-canary.29",
+ "next": "15.5.2",
"next-auth": "5.0.0-beta.29",
- "react": "19.1.1",
- "react-dom": "19.1.1",
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
"react-icons": "4.12.0",
- "react-qr-code": "2.0.18",
"rpc-websockets": "7.11.0",
"valtio": "2.1.7",
- "viem": "2.37.9",
- "wagmi": "2.17.5",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9",
"webauthn-p256": "0.0.2"
},
"devDependencies": {
@@ -168,8 +164,8 @@
"@playwright/test": "1.48.2",
"@reown/appkit-testing": "workspace:*",
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"dotenv": "16.4.7"
}
}
diff --git a/apps/laboratory/playwright.config.ts b/apps/laboratory/playwright.config.ts
index 998f08de6f..f8cdd4eeec 100644
--- a/apps/laboratory/playwright.config.ts
+++ b/apps/laboratory/playwright.config.ts
@@ -13,17 +13,13 @@ config({ path: './.env.local' })
const shardSuffix = process.env['PLAYWRIGHT_SHARD_SUFFIX']
const blobOutputDir = 'playwright-blob-reports'
const blobFileName = shardSuffix ? `report-${shardSuffix}.zip` : 'report.zip'
-const skipWS = process.env['SKIP_PLAYWRIGHT_WEBSERVER'] === 'true'
export default defineConfig({
testDir: './tests',
fullyParallel: true,
workers: getValue(8, 4),
reporter: process.env['CI']
- ? [
- ['blob', { outputDir: blobOutputDir, fileName: blobFileName }],
- ['json', { outputFile: 'test-results.json' }]
- ]
+ ? [['blob', { outputDir: blobOutputDir, fileName: blobFileName }]]
: [['list'], ['html', { host: '0.0.0.0' }], ['json', { outputFile: 'test-results.json' }]],
// Limits the number of failed tests in the whole test suite. Playwright Test will stop after reaching this number of failed tests and skip any tests that were not executed yet
maxFailures: getValue(10, undefined),
@@ -38,27 +34,20 @@ export default defineConfig({
/* Take a screenshot when the test fails */
screenshot: 'only-on-failure',
- trace: 'retain-on-failure',
- video: {
- mode: 'retain-on-failure',
- size: {
- width: 640,
- height: 480
- }
- }
+
+ /* Collect trace regardless so we can debug latency regressions. See https://playwright.dev/docs/trace-viewer */
+ trace: 'on',
+
+ video: 'retain-on-failure'
},
/* Configure projects for major browsers */
projects: getProjects(),
/* Run your local dev server before starting the tests */
- ...(skipWS
- ? {}
- : {
- webServer: {
- command: 'pnpm playwright:start',
- url: BASE_URL,
- reuseExistingServer: !process.env['CI']
- }
- })
+ webServer: {
+ command: 'pnpm playwright:start',
+ url: BASE_URL,
+ reuseExistingServer: !process.env['CI'] || Boolean(process.env['SKIP_PLAYWRIGHT_WEBSERVER'])
+ }
})
diff --git a/apps/laboratory/src/components/AppKitButtonsMultiChain.tsx b/apps/laboratory/src/components/AppKitButtonsMultiChain.tsx
index dcb8fb4221..cab7a5e46e 100644
--- a/apps/laboratory/src/components/AppKitButtonsMultiChain.tsx
+++ b/apps/laboratory/src/components/AppKitButtonsMultiChain.tsx
@@ -19,9 +19,7 @@ import {
mainnet,
polygon,
solana,
- solanaTestnet,
- ton,
- tonTestnet
+ solanaTestnet
} from '@reown/appkit/networks'
import {
AppKitButton,
@@ -47,8 +45,6 @@ function getNetworkToSwitch(activeNetwork: CaipNetwork | undefined) {
return activeNetwork.id === bitcoin.id ? bitcoinTestnet : bitcoin
case 'solana':
return activeNetwork.id === solana.id ? solanaTestnet : solana
- case 'ton':
- return activeNetwork.id === ton.id ? tonTestnet : ton
default:
return activeNetwork.id === polygon.id ? mainnet : polygon
}
@@ -61,13 +57,9 @@ export function AppKitButtonsMultiChain({ adapters }: { adapters: Adapter[] | un
const evmAccount = useAppKitAccount({ namespace: 'eip155' })
const solanaAccount = useAppKitAccount({ namespace: 'solana' })
const bitcoinAccount = useAppKitAccount({ namespace: 'bip122' })
- const tonAccount = useAppKitAccount({ namespace: 'ton' })
const toast = useChakraToast()
const isAnyAccountConnected =
- evmAccount.isConnected ||
- solanaAccount.isConnected ||
- bitcoinAccount.isConnected ||
- tonAccount.isConnected
+ evmAccount.isConnected || solanaAccount.isConnected || bitcoinAccount.isConnected
function handleConnectToEVM() {
open({ namespace: 'eip155' })
@@ -81,15 +73,10 @@ export function AppKitButtonsMultiChain({ adapters }: { adapters: Adapter[] | un
open({ namespace: 'bip122' })
}
- function handleConnectToTon() {
- open({ namespace: 'ton' })
- }
-
const hasEvmAdapter =
adapters?.includes('wagmi') || adapters?.includes('ethers') || adapters?.includes('ethers5')
const hasSolanaAdapter = adapters?.includes('solana')
const hasBitcoinAdapter = adapters?.includes('bitcoin')
- const hasTonAdapter = adapters?.includes('ton')
const isMultipleAdapter = adapters?.length && adapters.length > 1
function handleOpenSwapWithArguments() {
@@ -190,16 +177,6 @@ export function AppKitButtonsMultiChain({ adapters }: { adapters: Adapter[] | un
>
) : null}
- {hasTonAdapter ? (
- <>
-
-
- TON Button
-
-
-
- >
- ) : null}
>
) : null}
@@ -233,9 +210,6 @@ export function AppKitButtonsMultiChain({ adapters }: { adapters: Adapter[] | un
-
{isMultipleAdapter ? null : (
-
diff --git a/apps/laboratory/src/components/AppKitInfoMultiChain.tsx b/apps/laboratory/src/components/AppKitInfoMultiChain.tsx
index dca6665bf6..2f9fae38ac 100644
--- a/apps/laboratory/src/components/AppKitInfoMultiChain.tsx
+++ b/apps/laboratory/src/components/AppKitInfoMultiChain.tsx
@@ -1,12 +1,185 @@
import * as React from 'react'
-import { Grid } from '@chakra-ui/react'
+import {
+ Box,
+ Card,
+ CardBody,
+ CardHeader,
+ Grid,
+ Heading,
+ Stack,
+ StackDivider,
+ Text
+} from '@chakra-ui/react'
+import Image from 'next/image'
-import { useAppKitAccount } from '@reown/appkit/react'
+import type { ChainNamespace } from '@reown/appkit-common'
+import { convertCaip10ToErc3770 } from '@reown/appkit-experimental/erc3770'
+import { type UseAppKitAccountReturn, useAppKitAccount, useWalletInfo } from '@reown/appkit/react'
import type { AppKitConfigObject } from '../constants/appKitConfigs'
-import { AccountCard } from './AccountCard'
import { AppKitNetworkInfo } from './AppKitNetworkInfo'
+import { RelayClientInfo } from './RelayClientInfo'
+
+function namespaceToTitle(namespace: string | undefined) {
+ if (!namespace) {
+ return ''
+ }
+
+ switch (namespace) {
+ case 'eip155':
+ return 'EVM'
+ case 'solana':
+ return 'Solana'
+ case 'bip122':
+ return 'Bitcoin'
+ default:
+ return namespace
+ }
+}
+
+function AccountCard({
+ account,
+ namespace
+}: {
+ account: UseAppKitAccountReturn | undefined
+ namespace?: ChainNamespace
+}) {
+ const caipAddress = account?.caipAddress
+
+ const { embeddedWalletInfo } = useAppKitAccount({ namespace })
+ const { walletInfo } = useWalletInfo(namespace)
+ const appKitAccount = useAppKitAccount()
+
+ const isEIP155 = caipAddress?.startsWith('eip155:')
+ const erc3770Address = React.useMemo(() => {
+ if (!isEIP155 || !caipAddress) {
+ return null
+ }
+ try {
+ return convertCaip10ToErc3770(caipAddress)
+ } catch (e) {
+ return null
+ }
+ }, [caipAddress, isEIP155])
+
+ return (
+
+
+
+ {namespace ? namespaceToTitle(namespace) : 'Current'} Account Info
+
+
+
+
+ } spacing="4">
+
+
+ CAIP Address
+
+
+ {account?.caipAddress || '-'}
+
+
+
+
+
+ Address
+
+
+ {account?.address || '-'}
+
+
+
+
+
+ Chain Specific Address (ERC-3770)
+
+
+ {erc3770Address || '-'}
+
+
+
+ {embeddedWalletInfo ? (
+
+
+ Embedded Wallet Info
+
+
+ Email
+
+
+ {embeddedWalletInfo?.user?.email}
+
+
+ Account Type
+
+
+ {embeddedWalletInfo?.accountType === 'eoa' ? 'EOA' : 'Smart Account'}
+
+
+ Username
+
+ {embeddedWalletInfo?.user?.username}
+
+ Smart Account Status
+
+
+ {embeddedWalletInfo?.isSmartAccountDeployed ? 'Deployed' : 'Not Deployed'}
+
+
+ ) : null}
+
+ {walletInfo && (
+
+
+ Wallet Info
+
+
+
+ Type
+
+
+ {walletInfo.type}
+
+
+
+
+ Name
+
+
+ {walletInfo?.icon ? (
+
+ ) : null}
+
+ {walletInfo.name}
+
+
+
+
+ )}
+
+
+
+ Status
+
+
+ {appKitAccount?.status || '-'}
+
+
+
+
+
+
+
+ )
+}
export function AppKitInfoMultiChain({
config
diff --git a/apps/laboratory/src/components/DemoContent.tsx b/apps/laboratory/src/components/DemoContent.tsx
index f5a7704371..d897e38003 100644
--- a/apps/laboratory/src/components/DemoContent.tsx
+++ b/apps/laboratory/src/components/DemoContent.tsx
@@ -17,7 +17,6 @@ import { Ethers5Tests } from './Ethers/Ethers5Tests'
import { EthersTests } from './Ethers/EthersTests'
import { ReownAuthenticationTests } from './ReownAuthentication'
import { SiweData } from './Siwe/SiweData'
-import { TonTests } from './Ton/TonTests'
import { UpaTests } from './UPA/UpaTests'
const embeddedWalletOptions = [...ConstantsUtil.Socials, ConstantsUtil.Email]
@@ -30,7 +29,6 @@ export default function DemoContent({
const hasNoAdapters = config?.adapters?.length === 0
const solanaAdapter = config?.adapters?.find(adapter => adapter === 'solana')
const bitcoinAdapter = config?.adapters?.find(adapter => adapter === 'bitcoin')
- const tonAdapter = config?.adapters?.find(adapter => adapter === 'ton')
const evmAdapter = config?.adapters?.find(
adapter => adapter === 'wagmi' || adapter === 'ethers' || adapter === 'ethers5'
)
@@ -50,14 +48,12 @@ export default function DemoContent({
-
{evmAdapter === 'wagmi' && }
{evmAdapter === 'ethers5' && }
{evmAdapter === 'ethers' && }
{solanaAdapter ? : null}
{bitcoinAdapter ? : null}
- {tonAdapter ? : null}
{hasNoAdapters ? : null}
{isPayEnabled ? : null}
diff --git a/apps/laboratory/src/components/Ethers/EthersSignTypedDataTest.tsx b/apps/laboratory/src/components/Ethers/EthersSignTypedDataTest.tsx
index 45ee032614..09bd237812 100644
--- a/apps/laboratory/src/components/Ethers/EthersSignTypedDataTest.tsx
+++ b/apps/laboratory/src/components/Ethers/EthersSignTypedDataTest.tsx
@@ -2,12 +2,7 @@ import { Button } from '@chakra-ui/react'
import { BrowserProvider, JsonRpcSigner } from 'ethers'
import type { TypedDataField } from 'ethers'
-import {
- type Provider,
- useAppKitAccount,
- useAppKitNetwork,
- useAppKitProvider
-} from '@reown/appkit/react'
+import { type Provider, useAppKitAccount, useAppKitProvider } from '@reown/appkit/react'
import { useChakraToast } from '@/src/components/Toast'
@@ -38,7 +33,6 @@ const message = {
export function EthersSignTypedDataTest() {
const toast = useChakraToast()
const { address } = useAppKitAccount({ namespace: 'eip155' })
- const { chainId } = useAppKitNetwork()
const { walletProvider } = useAppKitProvider('eip155')
async function onSignTypedData() {
@@ -46,12 +40,12 @@ export function EthersSignTypedDataTest() {
if (!walletProvider || !address) {
throw Error('user is disconnected')
}
- const provider = new BrowserProvider(walletProvider, chainId)
+ const provider = new BrowserProvider(walletProvider, 1)
const signer = new JsonRpcSigner(provider, address)
const domain = {
name: 'Ether Mail',
version: '1',
- chainId,
+ chainId: 1,
verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'
} as const
diff --git a/apps/laboratory/src/constants/appKitConfigs.ts b/apps/laboratory/src/constants/appKitConfigs.ts
index 6ccd5d50fa..934eeb7350 100644
--- a/apps/laboratory/src/constants/appKitConfigs.ts
+++ b/apps/laboratory/src/constants/appKitConfigs.ts
@@ -1,6 +1,6 @@
import type { CreateConfigParameters } from 'wagmi'
-import { CoreHelperUtil, type CreateAppKit } from '@reown/appkit'
+import type { CreateAppKit } from '@reown/appkit'
import type { AppKitNetwork, CustomRpcUrlMap } from '@reown/appkit-common'
import { DefaultSIWX, ReownAuthentication } from '@reown/appkit-siwx'
@@ -9,7 +9,7 @@ import { siweConfig } from '@/src/utils/SiweUtils'
import { externalTestConnector } from '../utils/ConnectorUtil'
-export type Adapter = 'wagmi' | 'ethers' | 'ethers5' | 'solana' | 'bitcoin' | 'ton'
+export type Adapter = 'wagmi' | 'ethers' | 'ethers5' | 'solana' | 'bitcoin'
export type WagmiConfig = Partial & {
networks: AppKitNetwork[]
projectId: string
@@ -34,19 +34,11 @@ const customRpcUrls = {
'eip155:8453': [{ url: 'https://base-rpc.publicnode.com' }]
}
const connectors = [externalTestConnector()]
-const metadata = {
- name: 'AppKit',
- description: 'AppKit Laboratory',
- // eslint-disable-next-line no-negated-condition
- url: CoreHelperUtil.isClient() ? window.location.origin : '',
- icons: ['https://lab.reown.com/logo.png']
-}
const commonAppKitConfig = {
termsConditionsUrl: 'https://reown.com/terms-of-service',
privacyPolicyUrl: 'https://reown.com/privacy-policy',
customWallets: ConstantsUtil.CustomWallets,
- projectId: ConstantsUtil.ProjectId,
- metadata
+ projectId: ConstantsUtil.ProjectId
}
const commonWagmiConfig = {
ssr: true,
@@ -55,15 +47,6 @@ const commonWagmiConfig = {
} as WagmiConfig
export const appKitConfigs = {
- headless: {
- ...commonAppKitConfig,
- wagmiConfig: commonWagmiConfig,
- adapters: ['wagmi', 'solana', 'bitcoin', 'ton'],
- networks: ConstantsUtil.AllNetworks,
- features: {
- headless: true
- }
- },
// ----- Wagmi Variants ------------------------------
wagmi: {
...commonAppKitConfig,
@@ -112,7 +95,13 @@ export const appKitConfigs = {
...commonAppKitConfig,
adapters: ['wagmi'],
wagmiConfig: commonWagmiConfig,
- networks: ConstantsUtil.EvmNetworks
+ networks: ConstantsUtil.EvmNetworks,
+ metadata: {
+ name: 'AppKit',
+ description: 'AppKit Laboratory',
+ url: 'https://example.com',
+ icons: []
+ }
},
'wagmi-verify-evil': {
...commonAppKitConfig,
@@ -239,7 +228,13 @@ export const appKitConfigs = {
'ethers-verify-domain-mismatch': {
...commonAppKitConfig,
adapters: ['ethers'],
- networks: ConstantsUtil.EvmNetworks
+ networks: ConstantsUtil.EvmNetworks,
+ metadata: {
+ name: 'AppKit',
+ description: 'AppKit Laboratory',
+ url: 'https://example.com',
+ icons: []
+ }
},
'ethers-verify-evil': {
...commonAppKitConfig,
@@ -263,13 +258,6 @@ export const appKitConfigs = {
networks: ConstantsUtil.BitcoinNetworks
},
- // ----- TON Variants ------------------------------
- ton: {
- ...commonAppKitConfig,
- adapters: ['ton'],
- networks: ConstantsUtil.TonNetworks
- },
-
// ----- Solana Variants ------------------------------
solana: {
...commonAppKitConfig,
@@ -317,14 +305,13 @@ export const appKitConfigs = {
'multichain-all': {
...commonAppKitConfig,
wagmiConfig: commonWagmiConfig,
- adapters: ['wagmi', 'solana', 'bitcoin', 'ton'],
+ adapters: ['wagmi', 'solana', 'bitcoin'],
networks: ConstantsUtil.AllNetworks
},
'multichain-no-adapters': {
...commonAppKitConfig,
adapters: [],
- networks: ConstantsUtil.AllNetworks,
- enableMobileFullScreen: true
+ networks: ConstantsUtil.AllNetworks
},
'multichain-wagmi-solana': {
...commonAppKitConfig,
@@ -367,13 +354,6 @@ export const appKitConfigs = {
networks: [...ConstantsUtil.EvmNetworks, ...ConstantsUtil.SolanaNetworks],
siweConfig
},
- 'multichain-no-custom-wallets': {
- ...commonAppKitConfig,
- wagmiConfig: commonWagmiConfig,
- adapters: ['wagmi', 'solana', 'bitcoin', 'ton'],
- networks: ConstantsUtil.AllNetworks,
- customWallets: []
- },
// ----- Custom Variants ------------------------------
'siwx-default': {
diff --git a/apps/laboratory/src/layout/OptionsDrawer.tsx b/apps/laboratory/src/layout/OptionsDrawer.tsx
index 989f950485..c9f3d51614 100644
--- a/apps/laboratory/src/layout/OptionsDrawer.tsx
+++ b/apps/laboratory/src/layout/OptionsDrawer.tsx
@@ -20,8 +20,6 @@ import MixColorInput from '@/src/components/Theming/MixColorInput'
import QrColorInput from '@/src/components/Theming/QrColorInput'
import { ThemeStore } from '@/src/utils/StoreUtil'
-import SmartAccountVersionInput from '../components/SmartAccount/SmartAccountVersionInput'
-
interface Props {
controls: ReturnType
}
@@ -86,9 +84,6 @@ export function OptionsDrawer({ controls }: Props) {
-
-
-
diff --git a/apps/laboratory/src/utils/AppKitConfigUtil.ts b/apps/laboratory/src/utils/AppKitConfigUtil.ts
index 59183b8f4d..bba3529dee 100644
--- a/apps/laboratory/src/utils/AppKitConfigUtil.ts
+++ b/apps/laboratory/src/utils/AppKitConfigUtil.ts
@@ -3,7 +3,6 @@ import { BitcoinAdapter } from '@reown/appkit-adapter-bitcoin'
import { EthersAdapter } from '@reown/appkit-adapter-ethers'
import { Ethers5Adapter } from '@reown/appkit-adapter-ethers5'
import { SolanaAdapter } from '@reown/appkit-adapter-solana'
-import { TonAdapter } from '@reown/appkit-adapter-ton'
import { WagmiAdapter } from '@reown/appkit-adapter-wagmi'
import { type Adapter, type WagmiConfig, appKitConfigs } from '@/src/constants/appKitConfigs'
@@ -12,7 +11,6 @@ const solanaAdapter = new SolanaAdapter()
const ethersAdapter = new EthersAdapter()
const ethers5Adapter = new Ethers5Adapter()
const bitcoinAdapter = new BitcoinAdapter()
-const tonAdapter = new TonAdapter()
export function getAppKitConfigByName(name: string) {
return appKitConfigs[name] || undefined
@@ -42,9 +40,6 @@ export function getAppKitAdapters(
if (adapter === 'bitcoin') {
appKitAdapters.push(bitcoinAdapter)
}
- if (adapter === 'ton') {
- appKitAdapters.push(tonAdapter)
- }
})
return appKitAdapters
diff --git a/apps/laboratory/src/utils/ConstantsUtil.ts b/apps/laboratory/src/utils/ConstantsUtil.ts
index ce272dd332..6d7d926d2c 100644
--- a/apps/laboratory/src/utils/ConstantsUtil.ts
+++ b/apps/laboratory/src/utils/ConstantsUtil.ts
@@ -17,14 +17,10 @@ import {
monadTestnet,
optimism,
polygon,
- rootstock,
- rootstockTestnet,
sepolia,
solana,
solanaDevnet,
solanaTestnet,
- ton,
- tonTestnet,
unichainSepolia,
zkSync
} from '@reown/appkit/networks'
@@ -88,9 +84,7 @@ const EvmNetworks = [
aurora,
mantle,
abstract,
- monadTestnet,
- rootstock,
- rootstockTestnet
+ monadTestnet
] as [AppKitNetwork, ...AppKitNetwork[]]
export const solanaNotExist = {
@@ -115,8 +109,6 @@ const BitcoinNetworks = [bitcoin, bitcoinTestnet, bitcoinSignet] as [
...AppKitNetwork[]
]
-const TonNetworks = [ton, tonTestnet] as [AppKitNetwork, ...AppKitNetwork[]]
-
export const ConstantsUtil = {
SigningSucceededToastTitle: 'Signing Succeeded',
SigningFailedToastTitle: 'Signing Failed',
@@ -172,8 +164,7 @@ export const ConstantsUtil = {
EvmNetworks,
SolanaNetworks,
BitcoinNetworks,
- TonNetworks,
- AllNetworks: [...EvmNetworks, ...SolanaNetworks, ...BitcoinNetworks, ...TonNetworks] as [
+ AllNetworks: [...EvmNetworks, ...SolanaNetworks, ...BitcoinNetworks] as [
AppKitNetwork,
...AppKitNetwork[]
],
diff --git a/apps/laboratory/src/utils/DataUtil.ts b/apps/laboratory/src/utils/DataUtil.ts
index 35bef907d8..76cccd1f5a 100644
--- a/apps/laboratory/src/utils/DataUtil.ts
+++ b/apps/laboratory/src/utils/DataUtil.ts
@@ -50,6 +50,11 @@ export const wagmiSdkOptions: SdkOption[] = [
link: '/appkit?name=wagmi-no-socials',
description: 'Configuration using wagmi without socials'
},
+ {
+ title: 'Wallet Button',
+ link: '/appkit?name=wagmi-wallet-button',
+ description: 'Configuration using wagmi with wallet buttons'
+ },
{
title: 'Permissions(Sync)',
link: '/appkit?name=wagmi-permissions-sync',
@@ -82,6 +87,11 @@ export const ethersSdkOptions: SdkOption[] = [
title: 'Without Socials',
link: '/appkit?name=ethers-no-socials',
description: 'Configuration using ethers without socials'
+ },
+ {
+ title: 'Wallet Button',
+ link: '/appkit?name=ethers-wallet-button',
+ description: 'Configuration using ethers with wallet buttons'
}
]
@@ -100,6 +110,11 @@ export const ethers5SdkOptions: SdkOption[] = [
title: 'Without Socials',
link: '/appkit?name=ethers5-no-socials',
description: 'Configuration using ethers without socials'
+ },
+ {
+ title: 'Wallet Button',
+ link: '/appkit?name=ethers5-wallet-button',
+ description: 'Configuration using ethers with socials'
}
]
@@ -118,6 +133,11 @@ export const solanaSdkOptions: SdkOption[] = [
title: 'Without Socials',
link: '/appkit?name=solana-no-socials',
description: 'Configuration using ethers without socials'
+ },
+ {
+ title: 'Wallet Button',
+ link: '/appkit?name=solana-wallet-button',
+ description: 'Configuration using solana with wallet buttons'
}
]
@@ -191,11 +211,6 @@ export const featuredSdkOptions: SdkOption[] = [
title: 'Basic',
link: '/appkit?name=multichain-no-adapters',
description: 'Configuration with no adapters enabled for AppKit'
- },
- {
- title: 'AppKit Headless',
- link: '/appkit?name=headless',
- description: 'Custom connect UI with AppKit Headless'
}
]
@@ -204,14 +219,11 @@ export const bitcoinSdkOptions: SdkOption[] = [
title: 'Default',
link: '/appkit?name=bitcoin',
description: 'Basic configuration using bitcoin as a driving library'
- }
-]
-
-export const tonSdkOptions: SdkOption[] = [
+ },
{
- title: 'Default',
- link: '/appkit?name=ton',
- description: 'Basic configuration using Ton as a driving library'
+ title: 'Wallet Button',
+ link: '/appkit?name=bitcoin-wallet-button',
+ description: 'Configuration using bitcoin with wallet buttons'
}
]
diff --git a/apps/laboratory/test-results.json b/apps/laboratory/test-results.json
new file mode 100644
index 0000000000..a1d4e1e241
--- /dev/null
+++ b/apps/laboratory/test-results.json
@@ -0,0 +1,696 @@
+{
+ "config": {
+ "configFile": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/playwright.config.ts",
+ "rootDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "forbidOnly": false,
+ "fullyParallel": true,
+ "globalSetup": null,
+ "globalTeardown": null,
+ "globalTimeout": 0,
+ "grep": {},
+ "grepInvert": null,
+ "maxFailures": 0,
+ "metadata": {
+ "actualWorkers": 1
+ },
+ "preserveOutput": "always",
+ "reporter": [
+ [
+ "list",
+ null
+ ],
+ [
+ "html",
+ {
+ "host": "0.0.0.0"
+ }
+ ],
+ [
+ "json",
+ {
+ "outputFile": "test-results.json"
+ }
+ ]
+ ],
+ "reportSlowTests": {
+ "max": 5,
+ "threshold": 15000
+ },
+ "quiet": false,
+ "projects": [
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/ethers",
+ "name": "Desktop Firefox/ethers",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/ethers5",
+ "name": "Desktop Firefox/ethers5",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/wagmi",
+ "name": "Desktop Firefox/wagmi",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/solana",
+ "name": "Desktop Firefox/solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/siwe-email\\.spec\\.ts|siwe-extension\\.spec\\.ts|multichain-.*\\.spec\\.ts|reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|basic-tests.spec.ts|siwx-extension.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|wallet.spec.ts|wallet-button.spec|multi-wallet.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/bitcoin",
+ "name": "Desktop Firefox/bitcoin",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:wallet.spec.ts|wallet-button.spec|basic-tests.spec.ts|siwx-extension.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/ethers",
+ "name": "Desktop Chrome/ethers",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/ethers5",
+ "name": "Desktop Chrome/ethers5",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/wagmi",
+ "name": "Desktop Chrome/wagmi",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|multichain-extension.spec.ts|multichain-siwe-extension.spec.ts|basic-tests.spec.ts|canary.spec.ts|config.spec.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|siwe-extension.spec.ts|siwe-email.spec.ts|siwe-sa.spec.ts|siwe.spec.ts|smart-account.spec.ts|wallet-features.spec.ts|wallet.spec.ts|wallet-button.spec|verify.spec.ts|email-after-farcaster.spec.ts|multi-wallet.spec.ts|multi-wallet-siwx.spec.ts|flag-enable-reconnect.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/solana",
+ "name": "Desktop Chrome/solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/siwe-email\\.spec\\.ts|siwe-extension\\.spec\\.ts|multichain-.*\\.spec\\.ts|reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:extension.spec.ts|basic-tests.spec.ts|siwx-extension.ts|email.spec.ts|no-email.spec.ts|no-socials.spec.ts|wallet.spec.ts|wallet-button.spec|multi-wallet.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/bitcoin",
+ "name": "Desktop Chrome/bitcoin",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [
+ "/reown-authentication.*\\.spec\\.ts/u"
+ ],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:wallet.spec.ts|wallet-button.spec|basic-tests.spec.ts|siwx-extension.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "iPhone 12/ethers",
+ "name": "iPhone 12/ethers",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "iPhone 12/ethers5",
+ "name": "iPhone 12/ethers5",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "iPhone 12/wagmi",
+ "name": "iPhone 12/wagmi",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "iPhone 12/solana",
+ "name": "iPhone 12/solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "iPhone 12/bitcoin",
+ "name": "iPhone 12/bitcoin",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Galaxy S5/ethers",
+ "name": "Galaxy S5/ethers",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Galaxy S5/ethers5",
+ "name": "Galaxy S5/ethers5",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Galaxy S5/wagmi",
+ "name": "Galaxy S5/wagmi",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Galaxy S5/solana",
+ "name": "Galaxy S5/solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Galaxy S5/bitcoin",
+ "name": "Galaxy S5/bitcoin",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/).*(?:mobile-wallet-features.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-no-adapters",
+ "name": "Desktop Firefox/multichain-no-adapters",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-no-adapters\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-all",
+ "name": "Desktop Firefox/multichain-all",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-all\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-all-email",
+ "name": "Desktop Firefox/multichain-all-email",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-all-email\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multi-wallet-multichain",
+ "name": "Desktop Firefox/multi-wallet-multichain",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multi-wallet-multichain\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-ethers-solana",
+ "name": "Desktop Firefox/multichain-ethers-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-ethers-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-ethers5-solana",
+ "name": "Desktop Firefox/multichain-ethers5-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-ethers5-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/multichain-wagmi-solana",
+ "name": "Desktop Firefox/multichain-wagmi-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-wagmi-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-no-adapters",
+ "name": "Desktop Chrome/multichain-no-adapters",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-no-adapters\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-all",
+ "name": "Desktop Chrome/multichain-all",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-all\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-all-email",
+ "name": "Desktop Chrome/multichain-all-email",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-all-email\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multi-wallet-multichain",
+ "name": "Desktop Chrome/multi-wallet-multichain",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multi-wallet-multichain\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-ethers-solana",
+ "name": "Desktop Chrome/multichain-ethers-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-ethers-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-ethers5-solana",
+ "name": "Desktop Chrome/multichain-ethers5-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-ethers5-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/multichain-wagmi-solana",
+ "name": "Desktop Chrome/multichain-wagmi-solana",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/multichain-wagmi-.*\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/core",
+ "name": "Desktop Firefox/core",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:sign-client.spec.ts|universal-provider.spec.ts|core.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/core",
+ "name": "Desktop Chrome/core",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:sign-client.spec.ts|universal-provider.spec.ts|core.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/reown-authentication",
+ "name": "Desktop Firefox/reown-authentication",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:reown-authentication.spec.ts|reown-authentication-email.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/reown-authentication",
+ "name": "Desktop Chrome/reown-authentication",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^(?!.*\\/multichain\\/)(?!.*\\/mobile-).*(?:reown-authentication.spec.ts|reown-authentication-email.spec.ts)/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Firefox/default-account-types",
+ "name": "Desktop Firefox/default-account-types",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/email-default-account-types\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ },
+ {
+ "outputDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "Desktop Chrome/default-account-types",
+ "name": "Desktop Chrome/default-account-types",
+ "testDir": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "/^.*\\/email-default-account-types\\.spec\\.ts$/u"
+ ],
+ "timeout": 90000
+ }
+ ],
+ "shard": null,
+ "updateSnapshots": "missing",
+ "version": "1.48.2",
+ "workers": 4,
+ "webServer": {
+ "command": "pnpm playwright:start",
+ "url": "http://localhost:3000/",
+ "reuseExistingServer": true
+ }
+ },
+ "suites": [
+ {
+ "title": "verify.spec.ts",
+ "file": "verify.spec.ts",
+ "column": 0,
+ "line": 0,
+ "specs": [
+ {
+ "title": "wagmi: can sign even if Verify API is blocked",
+ "ok": true,
+ "tags": [
+ "canary"
+ ],
+ "tests": [
+ {
+ "timeout": 90000,
+ "annotations": [
+ {
+ "type": "canary-metric-name",
+ "description": "HappyPath.verify-blocked"
+ }
+ ],
+ "expectedStatus": "passed",
+ "projectId": "Desktop Chrome/wagmi",
+ "projectName": "Desktop Chrome/wagmi",
+ "results": [
+ {
+ "workerIndex": 2,
+ "status": "passed",
+ "duration": 21607,
+ "errors": [],
+ "stdout": [],
+ "stderr": [],
+ "retry": 0,
+ "startTime": "2025-09-15T14:54:56.423Z",
+ "attachments": [
+ {
+ "name": "trace",
+ "contentType": "application/zip",
+ "path": "/Users/chris13524/git/github.com/reown-com/appkit/apps/laboratory/test-results/verify-wagmi-can-sign-even-if-Verify-API-is-blocked-Desktop-Chrome-wagmi/trace.zip"
+ }
+ ]
+ }
+ ],
+ "status": "expected"
+ }
+ ],
+ "id": "f7b216369e2b571fd06c-561b994522b7fb5b94f0",
+ "file": "verify.spec.ts",
+ "line": 203,
+ "column": 1
+ }
+ ]
+ }
+ ],
+ "errors": [],
+ "stats": {
+ "startTime": "2025-09-15T14:54:54.747Z",
+ "duration": 24435.70199999999,
+ "expected": 1,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ }
+}
\ No newline at end of file
diff --git a/apps/laboratory/tests/basic-tests.spec.ts b/apps/laboratory/tests/basic-tests.spec.ts
index 8f878eb04a..eefaa55c0e 100644
--- a/apps/laboratory/tests/basic-tests.spec.ts
+++ b/apps/laboratory/tests/basic-tests.spec.ts
@@ -49,7 +49,7 @@ basicTest('Should be able to open modal with the open hook', async () => {
})
basicTest('Should show socials enabled by default', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
diff --git a/apps/laboratory/tests/core-sign-client.spec.ts b/apps/laboratory/tests/core-sign-client.spec.ts
index 743c3bb044..a0ffe6d059 100644
--- a/apps/laboratory/tests/core-sign-client.spec.ts
+++ b/apps/laboratory/tests/core-sign-client.spec.ts
@@ -4,14 +4,12 @@ import { BASE_URL, WalletPage, WalletValidator } from '@reown/appkit-testing'
import { expect } from './shared/fixtures/w3m-fixture'
import { ModalPage } from './shared/pages/ModalPage'
-import { ModalWalletValidator } from './shared/validators/ModalWalletValidator'
/* eslint-disable init-declarations */
let modalPage: ModalPage
let walletPage: WalletPage
let walletValidator: WalletValidator
let context: BrowserContext
-let validator: ModalWalletValidator
/* eslint-enable init-declarations */
// -- Setup --------------------------------------------------------------------
@@ -31,7 +29,6 @@ signClientTest.beforeAll(async ({ browser }) => {
modalPage = new ModalPage(browserPage, 'library', 'core-sign-client')
walletPage = new WalletPage(await context.newPage())
walletValidator = new WalletValidator(walletPage.page)
- validator = new ModalWalletValidator(browserPage)
await walletPage.load()
@@ -71,7 +68,7 @@ signClientTest('it should sign message with sign client', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Ethereum' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
signClientTest('it should switch networks with sign client', async () => {
@@ -86,7 +83,7 @@ signClientTest('it should sign message after network switch with sign client', a
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Polygon' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
signClientTest('it should stay connected after page refresh with sign client', async () => {
@@ -99,7 +96,7 @@ signClientTest('it should reject sign message with sign client', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Ethereum' })
await walletPage.handleRequest({ accept: false })
- await validator.expectRejectedSign()
+ await expect(modalPage.page.getByText('Failed to sign')).toBeVisible()
})
signClientTest('it should switch between various networks with sign client', async () => {
diff --git a/apps/laboratory/tests/core-universal-provider.spec.ts b/apps/laboratory/tests/core-universal-provider.spec.ts
index d28f1fd0ce..0c7f9114fa 100644
--- a/apps/laboratory/tests/core-universal-provider.spec.ts
+++ b/apps/laboratory/tests/core-universal-provider.spec.ts
@@ -4,14 +4,12 @@ import { BASE_URL, WalletPage, WalletValidator } from '@reown/appkit-testing'
import { expect } from './shared/fixtures/w3m-fixture'
import { ModalPage } from './shared/pages/ModalPage'
-import { ModalWalletValidator } from './shared/validators/ModalWalletValidator'
/* eslint-disable init-declarations */
let modalPage: ModalPage
let walletPage: WalletPage
let walletValidator: WalletValidator
let context: BrowserContext
-let validator: ModalWalletValidator
/* eslint-enable init-declarations */
// -- Setup --------------------------------------------------------------------
@@ -31,7 +29,6 @@ universalProviderTest.beforeAll(async ({ browser }) => {
modalPage = new ModalPage(browserPage, 'library', 'core-universal-provider')
walletPage = new WalletPage(await context.newPage())
walletValidator = new WalletValidator(walletPage.page)
- validator = new ModalWalletValidator(browserPage)
await walletPage.load()
@@ -71,7 +68,7 @@ universalProviderTest('it should sign message with universal provider', async ()
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Ethereum' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
universalProviderTest('it should switch networks with universal provider', async () => {
@@ -86,7 +83,7 @@ universalProviderTest('it should sign message after network switch with UP', asy
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Polygon' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
universalProviderTest('it should stay connected after page refresh with UP', async () => {
@@ -99,7 +96,7 @@ universalProviderTest('it should reject sign message with UP', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Ethereum' })
await walletPage.handleRequest({ accept: false })
- await validator.expectRejectedSign()
+ await expect(modalPage.page.getByText('Failed to sign')).toBeVisible()
})
universalProviderTest('it should switch between various networks with UP', async () => {
diff --git a/apps/laboratory/tests/core.spec.ts b/apps/laboratory/tests/core.spec.ts
index 78aca1d2ab..c21015aa07 100644
--- a/apps/laboratory/tests/core.spec.ts
+++ b/apps/laboratory/tests/core.spec.ts
@@ -4,15 +4,12 @@ import { BASE_URL, WalletPage, WalletValidator } from '@reown/appkit-testing'
import { expect } from './shared/fixtures/w3m-fixture'
import { ModalPage } from './shared/pages/ModalPage'
-import { ModalWalletValidator } from './shared/validators/ModalWalletValidator'
/* eslint-disable init-declarations */
let modalPage: ModalPage
let walletPage: WalletPage
let walletValidator: WalletValidator
let context: BrowserContext
-let validator: ModalWalletValidator
-
/* eslint-enable init-declarations */
// -- Setup --------------------------------------------------------------------
@@ -32,7 +29,6 @@ coreTest.beforeAll(async ({ browser }) => {
modalPage = new ModalPage(browserPage, 'library', 'core')
walletPage = new WalletPage(await context.newPage())
walletValidator = new WalletValidator(walletPage.page)
- validator = new ModalWalletValidator(browserPage)
await walletPage.load()
@@ -70,7 +66,7 @@ coreTest('it should sign message', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Ethereum' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
coreTest('it should switch networks', async () => {
@@ -86,7 +82,7 @@ coreTest('it should sign message after network switch', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Polygon' })
await walletPage.handleRequest({ accept: true })
- await validator.expectAcceptedSign()
+ await expect(modalPage.page.getByText('Signing Succeeded')).toBeVisible()
})
coreTest('it should stay connected after page refresh', async () => {
@@ -98,7 +94,7 @@ coreTest('it should reject sign message', async () => {
await modalPage.page.getByTestId('sign-message-button').click()
await walletValidator.expectReceivedSign({ chainName: 'Polygon' })
await walletPage.handleRequest({ accept: false })
- await validator.expectRejectedSign()
+ await expect(modalPage.page.getByText('Signing Failed')).toBeVisible()
})
coreTest('it should switch between various networks', async () => {
diff --git a/apps/laboratory/tests/email-default-account-types.spec.ts b/apps/laboratory/tests/email-default-account-types.spec.ts
index 55984fa850..c816ceb2ff 100644
--- a/apps/laboratory/tests/email-default-account-types.spec.ts
+++ b/apps/laboratory/tests/email-default-account-types.spec.ts
@@ -51,7 +51,6 @@ emailTest.afterAll(async () => {
emailTest('it should make the default account type as smart account', async () => {
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
await page.closeModal()
@@ -60,9 +59,7 @@ emailTest('it should make the default account type as smart account', async () =
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
- await page.goBack()
await page.disconnect()
await validator.expectDisconnected()
})
@@ -75,9 +72,8 @@ emailTest('it should connect again and should be sa', async () => {
// Verify the active account type is smart account
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
- await page.goBack()
+
await page.disconnect()
await validator.expectDisconnected()
})
@@ -97,7 +93,6 @@ emailTest('it should show make the default account type as EOA', async () => {
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
await page.closeModal()
@@ -106,9 +101,7 @@ emailTest('it should show make the default account type as EOA', async () => {
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
- await page.goBack()
await page.disconnect()
await validator.expectDisconnected()
})
@@ -121,9 +114,7 @@ emailTest('it should connect again and should be eoa', async () => {
// Verify the active account type is smart account
await page.goToProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
- await page.goBack()
await page.disconnect()
await validator.expectDisconnected()
diff --git a/apps/laboratory/tests/email.spec.ts b/apps/laboratory/tests/email.spec.ts
index d83b1b6819..2fd7d7e73d 100644
--- a/apps/laboratory/tests/email.spec.ts
+++ b/apps/laboratory/tests/email.spec.ts
@@ -132,7 +132,7 @@ emailTest(
'it should still be able to request transactions after aborting request',
async ({ library }) => {
// Only run on evm
- if (['bitcoin', 'solana', 'ton'].includes(library)) {
+ if (['bitcoin', 'solana'].includes(library)) {
test.skip()
}
@@ -141,14 +141,14 @@ emailTest(
await validator.expectRejectedSign()
await page.sendCalls()
- await validator.expectFrameTextToContain('AppKit requests multiple transactions')
+ await validator.expectFrameTextToContain('AppKit Lab requests multiple transactions')
await page.closeModal()
}
)
emailTest('it should switch account and network correctly', async ({ library }) => {
// Only run on evm and solana
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
test.skip()
} else if (library === 'solana') {
await page.switchNetwork('Solana Testnet')
diff --git a/apps/laboratory/tests/extension.spec.ts b/apps/laboratory/tests/extension.spec.ts
index 05c9106a9e..41d41f552b 100644
--- a/apps/laboratory/tests/extension.spec.ts
+++ b/apps/laboratory/tests/extension.spec.ts
@@ -12,8 +12,6 @@ function getNetworks(library: string) {
return ['Solana Testnet', 'Solana Devnet', 'Solana']
} else if (library === 'bitcoin') {
return ['Bitcoin Testnet', 'Bitcoin']
- } else if (library === 'ton') {
- return ['TON Testnet', 'TON']
}
return ['Polygon', 'Base', 'Ethereum']
@@ -51,7 +49,7 @@ extensionTest('it should sign message', async () => {
})
extensionTest('it should sign typed data', async ({ library }) => {
- if (library === 'solana' || library === 'bitcoin' || library === 'ton') {
+ if (library === 'solana' || library === 'bitcoin') {
return
}
diff --git a/apps/laboratory/tests/mobile-wallet-features.spec.ts b/apps/laboratory/tests/mobile-wallet-features.spec.ts
index def91f0537..7668a97c12 100644
--- a/apps/laboratory/tests/mobile-wallet-features.spec.ts
+++ b/apps/laboratory/tests/mobile-wallet-features.spec.ts
@@ -41,10 +41,6 @@ mobileWalletFeaturesTest('it should show all wallets option', async () => {
mobileWalletFeaturesTest(
'it should show all wallets view and connect to a wallet',
async ({ library }) => {
- if (library === 'ton') {
- return
- }
-
await modalPage.openAllWallets()
await modalPage.page.waitForTimeout(500)
await modalPage.search(library === 'bitcoin' ? 'okx' : 'trust')
@@ -55,10 +51,6 @@ mobileWalletFeaturesTest(
)
mobileWalletFeaturesTest('it should show open button', async ({ library }) => {
- if (library === 'ton') {
- return
- }
-
await modalPage.clickAllWalletsListSearchItem(
library === 'bitcoin' ? OKX_WALLET_ID : TRUST_WALLET_ID
)
diff --git a/apps/laboratory/tests/multi-wallet-multichain.spec.ts b/apps/laboratory/tests/multi-wallet-multichain.spec.ts
index 253e8d7b10..f2ac85e1d7 100644
--- a/apps/laboratory/tests/multi-wallet-multichain.spec.ts
+++ b/apps/laboratory/tests/multi-wallet-multichain.spec.ts
@@ -1,5 +1,5 @@
/* eslint-disable no-await-in-loop */
-import { type Page, expect } from '@playwright/test'
+import { type Page } from '@playwright/test'
import { WalletPage } from '@reown/appkit-testing'
@@ -25,14 +25,14 @@ const test = extensionFixture.extend<{ library: string }>({
test.describe.configure({ mode: 'serial' })
-test.beforeAll(async ({ page: _page, context }) => {
+test.beforeAll(async ({ context }) => {
apiKey = process.env['MAILSAC_API_KEY'] as string
if (!apiKey) {
throw new Error('MAILSAC_API_KEY required')
}
- page = _page
+ page = await context.newPage()
wallet = new WalletPage(await context.newPage())
modal = new ModalPage(page, 'multichain-ethers-solana', 'default')
validator = new ModalValidator(page)
@@ -47,7 +47,11 @@ test.afterAll(async () => {
})
// -- Tests --------------------------------------------------------------------
-test('should enable multi-wallet feature with a whitelisted project id', async () => {
+test('should enable multi-wallet feature with a whitelisted project id', async ({ library }) => {
+ if (library === 'bitcoin') {
+ return
+ }
+
await page.getByTestId('project-id-button').click()
await page.getByTestId('project-id-input').fill('1b0841d0acfe3e32dcb0d53dbf505bdd')
await page.getByTestId('project-id-save-button').click()
@@ -192,47 +196,3 @@ test('it should disconnect each wallet as expected', async () => {
await modal.disconnect()
await validator.expectDisconnected()
})
-
-test('should disconnect only the selected wallet', async () => {
- await modal.openConnectModal('solana')
- const solanaExtensionWallet = await modal.getExtensionWallet()
- await solanaExtensionWallet.click()
- await validator.expectConnected('solana')
- solanaExtensionWalletAddress = await modal.getAddress('solana')
-
- await modal.openConnectModal('eip155')
- await modal.qrCodeFlow(modal, wallet, undefined, true)
- await validator.expectConnected('eip155')
- await validator.expectConnected('solana')
-
- walletConnectSolanaAddress = await modal.getAddress('solana')
- walletConnectEvmAddress = await modal.getAddress('eip155')
-
- expect(await modal.getAddress('solana')).not.toBe(solanaExtensionWalletAddress)
-
- await modal.openAccount()
- await modal.clickWalletSwitchButton()
- await modal.clickTab('solana')
-
- await modal.disconnectConnection('Reown')
- await modal.closeModal()
-
- await modal.page.reload()
-
- await validator.expectConnected('eip155')
- await validator.expectConnected('solana')
-
- expect(await modal.getAddress('solana')).toBe(walletConnectSolanaAddress)
- expect(await modal.getAddress('eip155')).toBe(walletConnectEvmAddress)
-})
-
-test('should disconnect WC as expected for all namespaces', async () => {
- await modal.openAccount()
- await modal.clickWalletSwitchButton()
- await modal.clickTab('solana')
-
- await modal.clickProfileWalletsDisconnectButton()
-
- await validator.expectDisconnected('solana')
- await validator.expectDisconnected('eip155')
-})
diff --git a/apps/laboratory/tests/multi-wallet-siwx.spec.ts b/apps/laboratory/tests/multi-wallet-siwx.spec.ts
index 1c3d25eac1..942ca7e8d8 100644
--- a/apps/laboratory/tests/multi-wallet-siwx.spec.ts
+++ b/apps/laboratory/tests/multi-wallet-siwx.spec.ts
@@ -49,7 +49,7 @@ test.afterAll(async () => {
// -- Tests --------------------------------------------------------------------
test('should enable multi-wallet feature with a whitelisted project id', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
@@ -60,7 +60,7 @@ test('should enable multi-wallet feature with a whitelisted project id', async (
})
test('should connect multiple wallets with SIWX', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
@@ -85,7 +85,7 @@ test('should connect multiple wallets with SIWX', async ({ library }) => {
test('should require SIWX signature when switching networks with multiple wallets', async ({
library
}) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
@@ -123,7 +123,7 @@ test('should require SIWX signature when switching networks with multiple wallet
})
test('should maintain SIWX state after page refresh', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
diff --git a/apps/laboratory/tests/multichain-extension.spec.ts b/apps/laboratory/tests/multichain-extension.spec.ts
index 475d784ee9..d0ef626441 100644
--- a/apps/laboratory/tests/multichain-extension.spec.ts
+++ b/apps/laboratory/tests/multichain-extension.spec.ts
@@ -152,48 +152,6 @@ extensionTest(
}
)
-extensionTest(
- 'it should connect with email on Ethereum, switch to a different chain and be able to switch account type on Ethereum',
- async () => {
- const mailsacApiKey = process.env['MAILSAC_API_KEY']
- if (!mailsacApiKey) {
- throw new Error('MAILSAC_API_KEY is not set')
- }
-
- const email = new Email(mailsacApiKey)
- await modalPage.emailFlow({
- emailAddress: await email.getEmailAddressToUse(),
- context: modalPage.page.context(),
- mailsacApiKey,
- clickConnectButton: true
- })
- await modalValidator.expectConnected()
-
- const emailEthAddress = (await modalPage.page
- .getByTestId('w3m-address')
- .textContent()) as string
-
- await modalPage.switchNetwork('Solana', true)
- await modalPage.closeModal()
- await modalValidator.expectConnected()
- await modalValidator.expectNetworkButton('Solana')
- await modalPage.openProfileWalletsView()
- await modalPage.clickTab('evm')
- await modalPage.switchAccount()
- await modalPage.closeModal()
- await modalValidator.expectConnected()
- await modalValidator.expectNetworkButton('Ethereum')
- await modalPage.openProfileWalletsView()
- await modalPage.clickTab('evm')
- await modalPage.switchAccount()
- await modalPage.closeModal()
- await modalValidator.expectAccountButtonAddress(emailEthAddress)
- await modalPage.openProfileWalletsView()
- await modalPage.clickProfileWalletsMoreButton()
- await modalPage.disconnect(false)
- }
-)
-
extensionTest('it should be disconnected after page refresh', async () => {
await modalPage.page.reload()
await modalValidator.expectDisconnected()
diff --git a/apps/laboratory/tests/multichain/multichain-all.spec.ts b/apps/laboratory/tests/multichain/multichain-all.spec.ts
index b90376b3af..d8ae65b274 100644
--- a/apps/laboratory/tests/multichain/multichain-all.spec.ts
+++ b/apps/laboratory/tests/multichain/multichain-all.spec.ts
@@ -1,39 +1,32 @@
-import { type Page, expect } from '@playwright/test'
+import { type BrowserContext, test } from '@playwright/test'
import { WalletPage, WalletValidator } from '@reown/appkit-testing'
import { DEFAULT_SESSION_PARAMS } from '@reown/appkit-testing'
-import { extensionFixture } from '../shared/fixtures/extension-fixture'
import { ModalPage } from '../shared/pages/ModalPage'
import { ModalValidator } from '../shared/validators/ModalValidator'
/* eslint-disable init-declarations */
-let page: Page
let modalPage: ModalPage
let modalValidator: ModalValidator
let walletPage: WalletPage
let walletValidator: WalletValidator
-let walletConnectEvmAddress: string
-let walletConnectSolanaAddress: string
-let solanaExtensionWalletAddress: string
+let context: BrowserContext
/* eslint-enable init-declarations */
const WALLET_CONNECT_TEST_ID = 'walletConnect'
const NAMESPACE = 'eip155'
// -- Setup --------------------------------------------------------------------
-const test = extensionFixture.extend<{ library: string }>({
- library: ['wagmi', { option: true }]
-})
-
test.describe.configure({ mode: 'serial' })
-test.beforeAll(async ({ context }) => {
- page = await context.newPage()
+test.beforeAll(async ({ browser }) => {
+ context = await browser.newContext()
+ const browserPage = await context.newPage()
- modalPage = new ModalPage(page, 'multichain-all', 'default')
+ modalPage = new ModalPage(browserPage, 'multichain-all', 'default')
walletPage = new WalletPage(await context.newPage())
- modalValidator = new ModalValidator(page)
+ modalValidator = new ModalValidator(browserPage)
walletValidator = new WalletValidator(walletPage.page)
await modalPage.load()
@@ -41,7 +34,7 @@ test.beforeAll(async ({ context }) => {
})
test.afterAll(async () => {
- await page.close()
+ await modalPage.page.close()
})
// -- Tests --------------------------------------------------------------------
@@ -164,51 +157,4 @@ test('it should connect to all namespaces with wallet buttons', async () => {
await modalValidator.expectAccountButtonReady('eip155')
await modalValidator.expectAccountButtonReady('solana')
await modalValidator.expectAccountButtonReady('bip122')
-
- await modalPage.disconnect()
- await modalValidator.expectDisconnected('eip155')
- await modalValidator.expectDisconnected('solana')
- await modalValidator.expectDisconnected('bip122')
-})
-
-test('should disconnect the previous connector when connecting to a new one', async () => {
- await modalPage.openConnectModal('solana')
- const solanaExtensionWallet = await modalPage.getExtensionWallet()
- await solanaExtensionWallet.click()
- await modalValidator.expectConnected('solana')
- solanaExtensionWalletAddress = await modalPage.getAddress('solana')
-
- await modalPage.openConnectModal('eip155')
- await modalPage.qrCodeFlow(modalPage, walletPage, undefined, true)
- await modalValidator.expectConnected('eip155')
- await modalValidator.expectConnected('solana')
-
- walletConnectSolanaAddress = await modalPage.getAddress('solana')
- walletConnectEvmAddress = await modalPage.getAddress('eip155')
-
- expect(await modalPage.getAddress('solana')).not.toBe(solanaExtensionWalletAddress)
-
- await modalPage.openAccount()
- await modalPage.clickWalletSwitchButton()
- await modalPage.clickTab('solana')
-
- await modalValidator.expectConnectionNotExist('Reown')
- await modalPage.closeModal()
-
- await modalPage.page.reload()
-
- await modalValidator.expectConnected('eip155')
- await modalValidator.expectConnected('solana')
-
- expect(await modalPage.getAddress('solana')).toBe(walletConnectSolanaAddress)
- expect(await modalPage.getAddress('eip155')).toBe(walletConnectEvmAddress)
-
- await modalPage.disconnect()
- await modalValidator.expectDisconnected('eip155')
- await modalValidator.expectDisconnected('solana')
-
- await modalPage.page.reload()
-
- await modalValidator.expectDisconnected('solana')
- await modalValidator.expectDisconnected('eip155')
})
diff --git a/apps/laboratory/tests/shared/pages/ModalPage.ts b/apps/laboratory/tests/shared/pages/ModalPage.ts
index 285d0be40a..adda9cd16f 100644
--- a/apps/laboratory/tests/shared/pages/ModalPage.ts
+++ b/apps/laboratory/tests/shared/pages/ModalPage.ts
@@ -4,7 +4,7 @@ import type { BrowserContext, Locator, Page } from '@playwright/test'
import { expect } from '@playwright/test'
import type { WalletFeature } from '@reown/appkit'
-import type { Address, ChainNamespace, Hex } from '@reown/appkit-common'
+import type { Address, Hex } from '@reown/appkit-common'
import { WalletPage, WalletValidator } from '@reown/appkit-testing'
import {
BASE_URL,
@@ -113,7 +113,7 @@ export class ModalPage {
await this.page.goto(this.url)
// Wait for w3m-modal to be injected
- await this.page.waitForSelector('w3m-modal', { state: 'visible', timeout: 30_000 })
+ await this.page.waitForSelector('w3m-modal', { state: 'visible', timeout: 5_000 })
}
assertDefined(value: T | undefined | null): T {
@@ -159,11 +159,8 @@ export class ModalPage {
return uri
}
- async getConnectUri(timingRecords?: TimingRecords, modalOpen?: boolean): Promise {
- if (!modalOpen) {
- await this.connectButton.click()
- }
-
+ async getConnectUri(timingRecords?: TimingRecords): Promise {
+ await this.connectButton.click()
await this.clickWalletConnect()
const qrLoadInitiatedTime = new Date()
@@ -226,12 +223,10 @@ export class ModalPage {
return uri
}
- // eslint-disable-next-line max-params
async qrCodeFlow(
page: ModalPage,
walletPage: WalletPage,
- qrCodeFlowType?: 'immediate-connect' | 'immediate',
- modalOpen?: boolean
+ qrCodeFlowType?: 'immediate-connect' | 'immediate'
): Promise {
// eslint-disable-next-line init-declarations
let uri: string
@@ -241,7 +236,7 @@ export class ModalPage {
if (qrCodeFlowType === 'immediate-connect' || qrCodeFlowType === 'immediate') {
uri = await page.getImmidiateConnectUri(undefined, qrCodeFlowType === 'immediate-connect')
} else {
- uri = await page.getConnectUri(undefined, modalOpen)
+ uri = await page.getConnectUri()
}
await walletPage.connectWithUri(uri)
@@ -263,43 +258,27 @@ export class ModalPage {
clickConnectButton?: boolean
timingRecords?: TimingRecords
}): Promise {
- const flowStart = Date.now()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] ========== Starting email flow for ${emailAddress} ==========`)
-
this.emailAddress = emailAddress
const email = new Email(mailsacApiKey)
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Deleting all existing messages`)
await email.deleteAllMessages(emailAddress)
const loginWithEmail = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Calling loginWithEmail at ${Date.now() - flowStart}ms`)
await this.loginWithEmail(emailAddress, undefined, clickConnectButton)
- const loginTime = new Date().getTime() - loginWithEmail.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] loginWithEmail completed in ${loginTime}ms`)
if (timingRecords) {
timingRecords.push({
item: 'loginWithEmail',
- timeMs: loginTime
+ timeMs: new Date().getTime() - loginWithEmail.getTime()
})
}
const getLatestMessageId1 = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Waiting for first email at ${Date.now() - flowStart}ms`)
const firstMessageId = await email.getLatestMessageId(emailAddress)
- const getMessageId1Time = new Date().getTime() - getLatestMessageId1.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Got first messageId in ${getMessageId1Time}ms`)
if (timingRecords) {
timingRecords.push({
item: 'getLatestMessageId1',
- timeMs: getMessageId1Time
+ timeMs: new Date().getTime() - getLatestMessageId1.getTime()
})
}
if (!firstMessageId) {
@@ -307,34 +286,19 @@ export class ModalPage {
}
const getEmailBody1 = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Fetching first email body at ${Date.now() - flowStart}ms`)
const firstEmailBody = await email.getEmailBody(emailAddress, firstMessageId)
- const getEmailBody1Time = new Date().getTime() - getEmailBody1.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Got first email body in ${getEmailBody1Time}ms`)
if (timingRecords) {
timingRecords.push({
item: 'getEmailBody1',
- timeMs: getEmailBody1Time
+ timeMs: new Date().getTime() - getEmailBody1.getTime()
})
}
let otp = ''
- const isApprove = email.isApproveEmail(firstEmailBody)
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] First email is ${isApprove ? 'APPROVAL' : 'OTP'} email`)
-
- if (isApprove) {
+ if (email.isApproveEmail(firstEmailBody)) {
const url = email.getApproveUrlFromBody(firstEmailBody)
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Processing device approval flow at ${Date.now() - flowStart}ms`)
const deleteAllMessages = new Date()
- // eslint-disable-next-line no-console
- console.log(
- `[emailFlow] Deleting messages before device approval at ${Date.now() - flowStart}ms`
- )
await email.deleteAllMessages(emailAddress)
if (timingRecords) {
timingRecords.push({
@@ -344,126 +308,74 @@ export class ModalPage {
}
const loadDeviceRegistrationPage = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Loading device registration page with URL: ${url}`)
const drp = new DeviceRegistrationPage(await context.newPage(), url)
drp.load()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Approving device at ${Date.now() - flowStart}ms`)
await drp.approveDevice()
await drp.close()
- const approvalTime = new Date().getTime() - loadDeviceRegistrationPage.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Device approval completed in ${approvalTime}ms`)
if (timingRecords) {
timingRecords.push({
item: 'loadDeviceRegistrationPage',
- timeMs: approvalTime
+ timeMs: new Date().getTime() - loadDeviceRegistrationPage.getTime()
})
}
const getLatestMessageId2 = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Waiting for second email (OTP) at ${Date.now() - flowStart}ms`)
const secondMessageId = await email.getLatestMessageId(emailAddress)
if (!secondMessageId) {
throw new Error('No messageId found')
}
- const getMessageId2Time = new Date().getTime() - getLatestMessageId2.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Got second messageId in ${getMessageId2Time}ms`)
if (timingRecords) {
timingRecords.push({
item: 'getLatestMessageId2',
- timeMs: getMessageId2Time
+ timeMs: new Date().getTime() - getLatestMessageId2.getTime()
})
}
const getEmailBody2 = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Fetching second email body at ${Date.now() - flowStart}ms`)
const secondEmailBody = await email.getEmailBody(emailAddress, secondMessageId)
- const getEmailBody2Time = new Date().getTime() - getEmailBody2.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Got second email body in ${getEmailBody2Time}ms`)
if (timingRecords) {
timingRecords.push({
item: 'getEmailBody2',
- timeMs: getEmailBody2Time
+ timeMs: new Date().getTime() - getEmailBody2.getTime()
})
}
if (email.isApproveEmail(secondEmailBody)) {
throw new Error('Unexpected approve email after already approved')
}
otp = email.getOtpCodeFromBody(secondEmailBody)
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Extracted OTP from second email`)
} else {
otp = email.getOtpCodeFromBody(firstEmailBody)
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Extracted OTP from first email (no approval needed)`)
}
const enterOTP = new Date()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] Entering OTP at ${Date.now() - flowStart}ms`)
await this.enterOTP(otp)
- const enterOTPTime = new Date().getTime() - enterOTP.getTime()
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] enterOTP completed in ${enterOTPTime}ms`)
if (timingRecords) {
timingRecords.push({
item: 'enterOTP',
- timeMs: enterOTPTime
+ timeMs: new Date().getTime() - enterOTP.getTime()
})
}
-
- const totalFlowTime = Date.now() - flowStart
- // eslint-disable-next-line no-console
- console.log(`[emailFlow] ========== Email flow completed in ${totalFlowTime}ms ==========`)
}
async loginWithEmail(email: string, validate = true, clickConnectButton = true) {
- // eslint-disable-next-line no-console
- console.log(`[loginWithEmail] Starting login with email: ${email}`)
-
if (clickConnectButton) {
- // eslint-disable-next-line no-console
- console.log(`[loginWithEmail] Clicking connect button`)
// Connect Button doesn't have a proper `disabled` attribute so we need to wait for the button to change the text
await this.page
.getByTestId('connect-button')
.getByRole('button', { name: 'Connect Wallet' })
.click()
}
-
- // eslint-disable-next-line no-console
- console.log(`[loginWithEmail] Filling email input`)
await this.page.getByTestId('wui-email-input').locator('input').focus()
await this.page.getByTestId('wui-email-input').locator('input').fill(email)
await this.page.getByTestId('wui-email-input').locator('input').press('Enter')
-
if (validate) {
- // eslint-disable-next-line no-console
- console.log(
- `[loginWithEmail] Waiting for email to be visible on notification screen (20s timeout)`
- )
- const validationStart = Date.now()
-
await expect(
this.page.getByText(email),
`Expected current email: ${email} to be visible on the notification screen`
).toBeVisible({
timeout: 20_000
})
-
- const validationTime = Date.now() - validationStart
- // eslint-disable-next-line no-console
- console.log(`[loginWithEmail] Email visible on screen after ${validationTime}ms`)
}
-
- // eslint-disable-next-line no-console
- console.log(`[loginWithEmail] Completed successfully`)
}
async loginWithSocial(socialOption: 'github', socialMail: string, socialPass: string) {
@@ -502,10 +414,10 @@ export class ModalPage {
async enterOTP(otp: string, headerTitle = 'Confirm Email') {
await expect(this.page.getByText(headerTitle)).toBeVisible({
- timeout: 20_000
+ timeout: 10_000
})
await expect(this.page.getByText('Enter the code we sent')).toBeVisible({
- timeout: 20_000
+ timeout: 10_000
})
const splitted = otp.split('')
@@ -705,7 +617,7 @@ export class ModalPage {
const connect = this.page.getByTestId('wallet-selector-walletconnect')
await connect.waitFor({
state: 'visible',
- timeout: 15000
+ timeout: 5000
})
await connect.click()
}
@@ -726,7 +638,7 @@ export class ModalPage {
}
async openProfileWalletsView(
- namespace?: ChainNamespace,
+ namespace?: string,
clickButtonType: 'account' | 'connect' = 'account'
) {
if (clickButtonType === 'account') {
@@ -739,7 +651,7 @@ export class ModalPage {
await this.page.waitForTimeout(500)
}
- async openConnectModal(namespace?: ChainNamespace) {
+ async openConnectModal(namespace?: string) {
await this.page.getByTestId(`connect-button${namespace ? `-${namespace}` : ''}`).click()
}
@@ -852,9 +764,7 @@ export class ModalPage {
let walletSelector: Locator
const walletSelectorRDNS = this.page.getByTestId(`wallet-selector-${EXTENSION_RDNS}`)
- const walletSelectorName = this.page.getByTestId(
- `wallet-selector-${EXTENSION_NAME.toLowerCase()}`
- )
+ const walletSelectorName = this.page.getByTestId(`wallet-selector-${EXTENSION_NAME}`)
try {
await walletSelectorRDNS.waitFor({ state: 'visible', timeout: 2_000 })
@@ -1007,20 +917,6 @@ export class ModalPage {
.getByTestId('wui-inactive-profile-wallet-item-button')
await expect(firstActiveConnectionButton).toBeVisible()
await firstActiveConnectionButton.click()
-
- // Wait until the active connection is updated
- await this.page.waitForTimeout(100)
- }
-
- async disconnectConnection(alt?: string) {
- const connection = this.page
- .getByTestId('active-connection')
- .filter({ has: this.page.locator(`[alt="${alt}"]`) })
-
- const disconnectButton = connection.locator('wui-icon-link[icon="power"]')
-
- await expect(disconnectButton).toBeVisible()
- await disconnectButton.click()
}
async switchAccountByAddress(address: string) {
@@ -1108,7 +1004,7 @@ export class ModalPage {
}
async connectToExtensionMultichain(
- chainNamespace: ChainNamespace,
+ chainNamespace: 'eip155' | 'solana' | 'bip122',
modalOpen?: boolean,
isAnotherNamespaceConnected?: boolean
) {
@@ -1124,16 +1020,4 @@ export class ModalPage {
await chainSelector.click()
}
}
-
- async goBack() {
- await this.page.getByTestId('header-back').click()
- await this.page.waitForTimeout(300)
- }
-
- async setCustomProjectId(projectId: string) {
- await this.page.getByTestId('project-id-button').click()
- await this.page.getByTestId('project-id-input').fill(projectId)
- await this.page.getByTestId('project-id-save-button').click()
- await this.page.reload()
- }
}
diff --git a/apps/laboratory/tests/shared/utils/email.ts b/apps/laboratory/tests/shared/utils/email.ts
index 3706df67d6..20c3c060b2 100644
--- a/apps/laboratory/tests/shared/utils/email.ts
+++ b/apps/laboratory/tests/shared/utils/email.ts
@@ -2,8 +2,6 @@ import { Mailsac } from '@mailsac/api'
const EMAIL_CHECK_INTERVAL = 2500
const MAX_EMAIL_CHECK = 96
-const EMAIL_BODY_CHECK_INTERVAL = 2500
-const MAX_EMAIL_BODY_CHECK = 3
const EMAIL_APPROVE_BUTTON_TEXT = 'Approve this login'
const APPROVE_URL_REGEX = /https:\/\/register.*/u
const OTP_CODE_REGEX = /\d{3}\s?\d{3}/u
@@ -29,10 +27,6 @@ export class Email {
}
async getLatestMessageId(email: string): Promise {
- const startTime = Date.now()
- // eslint-disable-next-line no-console
- console.log(`[getLatestMessageId] Starting to poll for email at ${email}`)
-
let checks = 0
/* eslint-disable no-await-in-loop */
while (checks < MAX_EMAIL_CHECK) {
@@ -47,87 +41,18 @@ export class Email {
throw new Error(`Message id not present for address ${email}`)
}
- const elapsedTime = Date.now() - startTime
- // eslint-disable-next-line no-console
- console.log(
- `[getLatestMessageId] Found message after ${checks + 1} attempt(s) in ${elapsedTime}ms for ${email}`
- )
-
return id
}
- checks += 1
- // eslint-disable-next-line no-console
- console.log(
- `[getLatestMessageId] Attempt ${checks}/${MAX_EMAIL_CHECK}: No messages yet, waiting ${EMAIL_CHECK_INTERVAL}ms...`
- )
await this.timeout(EMAIL_CHECK_INTERVAL)
+ checks += 1
}
-
- const elapsedTime = Date.now() - startTime
- throw new Error(
- `No email found for address ${email} after ${MAX_EMAIL_CHECK} attempts (${elapsedTime}ms)`
- )
+ throw new Error(`No email found for address ${email}`)
}
async getEmailBody(email: string, messageId: string): Promise {
- const startTime = Date.now()
- // eslint-disable-next-line no-console
- console.log(`[getEmailBody] Fetching email body for ${email}, messageId: ${messageId}`)
-
- let checks = 0
- let lastError: unknown = null
+ const result = await this.mailsac.messages.getBodyPlainText(email, messageId)
- /* eslint-disable no-await-in-loop */
- while (checks < MAX_EMAIL_BODY_CHECK) {
- try {
- const result = await this.mailsac.messages.getBodyPlainText(email, messageId)
- const elapsedTime = Date.now() - startTime
- // eslint-disable-next-line no-console
- console.log(
- `[getEmailBody] Successfully fetched email body after ${checks + 1} attempt(s) in ${elapsedTime}ms`
- )
-
- return String(result.data)
- } catch (error) {
- lastError = error
- checks += 1
-
- // Extract error details for logging
- const errorMessage = error instanceof Error ? error.message : String(error)
- const statusCode = (error as { response?: { status?: number } })?.response?.status
- const responseData = (error as { response?: { data?: unknown } })?.response?.data
-
- // eslint-disable-next-line no-console
- console.log(
- `[getEmailBody] Attempt ${checks}/${MAX_EMAIL_BODY_CHECK} failed for ${email}, messageId: ${messageId}`
- )
- // eslint-disable-next-line no-console
- console.log(`[getEmailBody] Error: ${errorMessage}`)
- if (statusCode) {
- // eslint-disable-next-line no-console
- console.log(`[getEmailBody] HTTP Status: ${statusCode}`)
- }
- if (responseData) {
- // eslint-disable-next-line no-console
- console.log(`[getEmailBody] Response data:`, responseData)
- }
-
- if (checks < MAX_EMAIL_BODY_CHECK) {
- // eslint-disable-next-line no-console
- console.log(`[getEmailBody] Retrying in ${EMAIL_BODY_CHECK_INTERVAL}ms...`)
- await this.timeout(EMAIL_BODY_CHECK_INTERVAL)
- }
- }
- }
-
- // All retries exhausted
- const errorMessage = lastError instanceof Error ? lastError.message : String(lastError)
- const statusCode = (lastError as { response?: { status?: number } })?.response?.status
- const statusPart = statusCode ? `, HTTP Status: ${statusCode}` : ''
-
- throw new Error(
- `Failed to fetch email body after ${MAX_EMAIL_BODY_CHECK} attempts. Email: ${email}, MessageId: ${messageId}, Last error: ${errorMessage}${statusPart}`
- )
+ return String(result.data)
}
isApproveEmail(body: string): boolean {
diff --git a/apps/laboratory/tests/shared/utils/metrics.ts b/apps/laboratory/tests/shared/utils/metrics.ts
index 7d218d70c9..4db4fa8ada 100644
--- a/apps/laboratory/tests/shared/utils/metrics.ts
+++ b/apps/laboratory/tests/shared/utils/metrics.ts
@@ -29,7 +29,6 @@ export async function afterEachCanary(testInfo: TestInfo, timingRecords: TimingR
if (!metricName) {
throw new Error('Metric name must be defined')
}
-
const env = process.env['ENVIRONMENT'] || 'dev'
const region = process.env['REGION'] || 'eu-central-1'
if (env !== 'dev') {
diff --git a/apps/laboratory/tests/shared/utils/namespace.ts b/apps/laboratory/tests/shared/utils/namespace.ts
index 36b29a7898..92f59c98a1 100644
--- a/apps/laboratory/tests/shared/utils/namespace.ts
+++ b/apps/laboratory/tests/shared/utils/namespace.ts
@@ -4,8 +4,6 @@ export function getNamespaceByLibrary(library: string) {
return 'solana'
case 'bitcoin':
return 'bip122'
- case 'ton':
- return 'ton'
default:
return 'eip155'
}
@@ -20,8 +18,6 @@ export function getNamespaceByNetworkName(networkName: string) {
case 'Bitcoin':
case 'Bitcoin Testnet':
return 'bip122'
- case 'TON':
- return 'ton'
default:
return 'eip155'
}
@@ -33,8 +29,6 @@ export function getTestnetByLibrary(library: string) {
return 'Solana Devnet'
case 'bitcoin':
return 'Bitcoin Testnet'
- case 'ton':
- return 'TON Testnet'
case 'wagmi':
case 'ethers':
case 'ethers5':
@@ -65,8 +59,6 @@ export function getMainnetByLibrary(library: string) {
return 'Solana'
case 'bitcoin':
return 'Bitcoin'
- case 'ton':
- return 'TON'
case 'wagmi':
case 'ethers':
case 'ethers5':
diff --git a/apps/laboratory/tests/shared/utils/project.ts b/apps/laboratory/tests/shared/utils/project.ts
index 6c4b234335..5eea7380e4 100644
--- a/apps/laboratory/tests/shared/utils/project.ts
+++ b/apps/laboratory/tests/shared/utils/project.ts
@@ -2,7 +2,7 @@ import { devices } from '@playwright/test'
import { DESKTOP_DEVICES, MOBILE_DEVICES } from '@reown/appkit-testing'
-const LIBRARIES = ['ethers', 'ethers5', 'wagmi', 'solana', 'bitcoin', 'ton'] as const
+const LIBRARIES = ['ethers', 'ethers5', 'wagmi', 'solana', 'bitcoin'] as const
const MULTICHAIN_LIBRARIES = [
'multichain-no-adapters',
'multichain-all',
@@ -18,8 +18,6 @@ const CORE_LIRARIES = ['core'] as const
const REOWN_AUTHENTICATION_LIBRARIES = ['reown-authentication'] as const
-const HEADLESS_LIBRARIES = ['headless'] as const
-
const LIBRARY_PERMUTATIONS = DESKTOP_DEVICES.flatMap(device =>
LIBRARIES.map(library => ({ device, library }))
)
@@ -44,10 +42,6 @@ const FLAG_PERMUTATIONS = DESKTOP_DEVICES.flatMap(device =>
FLAGS.map(library => ({ device, library }))
)
-const HEADLESS_PERMUTATIONS = DESKTOP_DEVICES.flatMap(device =>
- HEADLESS_LIBRARIES.map(library => ({ device, library }))
-)
-
interface UseOptions {
launchOptions: {
executablePath: string
@@ -106,8 +100,6 @@ const SINGLE_ADAPTER_SOLANA_TESTS = [
'multi-wallet.spec.ts'
]
-const HEADLESS_TESTS = ['headless.spec.ts']
-
const REOWN_AUTHENTICATION_TESTS = [
'reown-authentication.spec.ts',
'reown-authentication-email.spec.ts'
@@ -120,8 +112,6 @@ const SINGLE_ADAPTER_BITCOIN_TESTS = [
'siwx-extension.spec.ts'
]
-const SINGLE_ADAPTER_TON_TESTS = ['extension.spec.ts', 'wallet.spec.ts', 'basic-tests.spec.ts']
-
function createRegex(tests: string[], isDesktop = true) {
const desktopCheck = isDesktop ? '(?!.*/mobile-)' : ''
@@ -131,13 +121,11 @@ function createRegex(tests: string[], isDesktop = true) {
const SINGLE_ADAPTER_EVM_TESTS_REGEX = createRegex(SINGLE_ADAPTER_EVM_TESTS)
const SINGLE_ADAPTER_SOLANA_TESTS_REGEX = createRegex(SINGLE_ADAPTER_SOLANA_TESTS)
const SINGLE_ADAPTER_BITCOIN_TESTS_REGEX = createRegex(SINGLE_ADAPTER_BITCOIN_TESTS)
-const SINGLE_ADAPTER_TON_TESTS_REGEX = createRegex(SINGLE_ADAPTER_TON_TESTS)
const SINGLE_ADAPTER_MOBILE_REGEX = createRegex(SINGLE_ADAPTER_MOBILE_TESTS, false)
const CORE_TESTS_REGEX = createRegex(CORE_TESTS)
const CORE_TESTS_MOBILE_REGEX = createRegex(CORE_TESTS, false)
const REOWN_AUTHENTICATION_TESTS_REGEX = createRegex(REOWN_AUTHENTICATION_TESTS)
-const HEADLESS_TESTS_REGEX = createRegex(HEADLESS_TESTS)
const customProjectProperties: CustomProjectProperties = {
'Desktop Chrome/core': {
@@ -178,16 +166,6 @@ const customProjectProperties: CustomProjectProperties = {
testMatch: SINGLE_ADAPTER_BITCOIN_TESTS_REGEX,
testIgnore: /reown-authentication.*\.spec\.ts/u
},
- 'Desktop Chrome/ton': {
- testMatch: SINGLE_ADAPTER_TON_TESTS_REGEX,
- testIgnore:
- /siwe-.*\.spec\.ts|siwx-.*\.spec\.ts|multichain-.*\.spec\.ts|reown-authentication.*\.spec\.ts/u
- },
- 'Desktop Firefox/ton': {
- testMatch: SINGLE_ADAPTER_TON_TESTS_REGEX,
- testIgnore:
- /siwe-.*\.spec\.ts|siwx-.*\.spec\.ts|multichain-.*\.spec\.ts|reown-authentication.*\.spec\.ts/u
- },
'Desktop Chrome/solana': {
testMatch: SINGLE_ADAPTER_SOLANA_TESTS_REGEX,
testIgnore:
@@ -282,23 +260,11 @@ const customProjectProperties: CustomProjectProperties = {
'Galaxy S5/solana': {
testMatch: SINGLE_ADAPTER_MOBILE_REGEX
},
- 'iPhone 12/ton': {
- testMatch: SINGLE_ADAPTER_MOBILE_REGEX
- },
- 'Galaxy S5/ton': {
- testMatch: SINGLE_ADAPTER_MOBILE_REGEX
- },
'Desktop Chrome/reown-authentication': {
testMatch: REOWN_AUTHENTICATION_TESTS_REGEX
},
'Desktop Firefox/reown-authentication': {
testMatch: REOWN_AUTHENTICATION_TESTS_REGEX
- },
- 'Desktop Chrome/headless': {
- testMatch: HEADLESS_TESTS_REGEX
- },
- 'Desktop Firefox/headless': {
- testMatch: HEADLESS_TESTS_REGEX
}
}
@@ -336,7 +302,6 @@ export function getProjects() {
const coreProjects = CORE_PERMUTATIONS.map(createProject)
const reownAuthenticationProjects = REOWN_AUTHENTICATION_PERMUTATIONS.map(createProject)
const flagProjects = FLAG_PERMUTATIONS.map(createProject)
- const headlessProjects = HEADLESS_PERMUTATIONS.map(createProject)
const projects = [
...libraryDesktopProjects,
@@ -344,8 +309,7 @@ export function getProjects() {
...multichainProjects,
...coreProjects,
...reownAuthenticationProjects,
- ...flagProjects,
- ...headlessProjects
+ ...flagProjects
]
return projects
diff --git a/apps/laboratory/tests/shared/validators/ModalValidator.ts b/apps/laboratory/tests/shared/validators/ModalValidator.ts
index de00850f47..3bdc9177f4 100644
--- a/apps/laboratory/tests/shared/validators/ModalValidator.ts
+++ b/apps/laboratory/tests/shared/validators/ModalValidator.ts
@@ -40,16 +40,6 @@ export class ModalValidator {
await this.page.waitForTimeout(500)
}
- async expectConnectionNotExist(alt: string) {
- const connection = this.page
- .getByTestId('active-connection')
- .filter({ has: this.page.locator(`[alt="${alt}"]`) })
-
- await expect(connection, `Connection with alt "${alt}" should not exist`).not.toBeVisible({
- timeout: MAX_WAIT
- })
- }
-
async expectLoading(namespace?: ChainNamespace) {
const accountButton = namespace
? this.page.locator(`appkit-connect-button[namespace="${namespace}"]`)
@@ -65,7 +55,7 @@ export class ModalValidator {
})
}
- async expectBalanceFetched(currency: 'SOL' | 'ETH' | 'BTC' | 'POL' | 'TON', namespace?: string) {
+ async expectBalanceFetched(currency: 'SOL' | 'ETH' | 'BTC' | 'POL', namespace?: string) {
const accountButton = namespace
? this.page.getByTestId(`account-button-${namespace}`)
: this.page.locator('appkit-account-button').first()
@@ -351,18 +341,20 @@ export class ModalValidator {
}
async expectExternalVisible() {
- const externalConnector = this.page.getByTestId(/^wallet-selector-externaltestconnector/u)
+ const externalConnector = this.page.getByTestId(
+ /^wallet-selector-external-externalTestConnector/u
+ )
await expect(externalConnector).toBeVisible()
}
async expectCoinbaseNotVisible() {
- const coinbaseConnector = this.page.getByTestId(/^wallet-selector-coinbasewalletsdk/u)
+ const coinbaseConnector = this.page.getByTestId(/^wallet-selector-external-coinbaseWalletSDK/u)
await expect(coinbaseConnector).not.toBeVisible()
}
async expectCoinbaseVisible() {
const coinbaseConnector = this.page.getByTestId(
- /^wallet-selector-fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa/u
+ /^wallet-selector-featured-fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa/u
)
await expect(coinbaseConnector).toBeVisible({ timeout: 10_000 })
}
@@ -523,7 +515,7 @@ export class ModalValidator {
await expect(initializeBoundary).toBeHidden()
const accountButton = this.page.locator('appkit-account-button').first()
await expect(accountButton, 'Account button should be present').toBeAttached({
- timeout: 3_000
+ timeout: 1000
})
}
diff --git a/apps/laboratory/tests/siwe-email.spec.ts b/apps/laboratory/tests/siwe-email.spec.ts
index 64bec4fd14..5e45ccdcd0 100644
--- a/apps/laboratory/tests/siwe-email.spec.ts
+++ b/apps/laboratory/tests/siwe-email.spec.ts
@@ -12,7 +12,6 @@ import { ModalWalletValidator } from './shared/validators/ModalWalletValidator'
let page: ModalWalletPage
let validator: ModalWalletValidator
let context: BrowserContext
-let beforeAllError: Error | undefined
/* eslint-enable init-declarations */
// -- Setup --------------------------------------------------------------------
@@ -27,81 +26,69 @@ emailSiweTest.beforeAll(async ({ browser, library }) => {
emailSiweTest.setTimeout(300000)
const start = new Date()
+ context = await browser.newContext()
+ const browserPage = await context.newPage()
+ page = new ModalWalletPage(browserPage, library, 'siwe')
+ validator = new ModalWalletValidator(browserPage)
- try {
- context = await browser.newContext()
- const browserPage = await context.newPage()
- page = new ModalWalletPage(browserPage, library, 'siwe')
- validator = new ModalWalletValidator(browserPage)
+ await page.load()
- await page.load()
-
- const mailsacApiKey = process.env['MAILSAC_API_KEY']
- if (!mailsacApiKey) {
- throw new Error('MAILSAC_API_KEY is not set')
- }
- const email = new Email(mailsacApiKey)
-
- const getEmailAddressToUse = new Date()
- const tempEmail = await email.getEmailAddressToUse()
- beforeAllTimingRecords.push({
- item: 'getEmailAddressToUse',
- timeMs: new Date().getTime() - getEmailAddressToUse.getTime()
- })
-
- // Iframe should not be injected until needed
- validator.expectSecureSiteFrameNotInjected()
-
- const emailFlow = new Date()
- await page.emailFlow({
- emailAddress: tempEmail,
- context,
- mailsacApiKey,
- timingRecords: beforeAllTimingRecords
- })
- beforeAllTimingRecords.push({
- item: 'emailFlow',
- timeMs: new Date().getTime() - emailFlow.getTime()
- })
-
- if (library === 'solana') {
- const promptSiwe = new Date()
- await page.promptSiwe()
- beforeAllTimingRecords.push({
- item: 'promptSiwe',
- timeMs: new Date().getTime() - promptSiwe.getTime()
- })
-
- const approveSign = new Date()
- await page.approveSign()
- beforeAllTimingRecords.push({
- item: 'approveSign',
- timeMs: new Date().getTime() - approveSign.getTime()
- })
- }
-
- const startExpectConnected = new Date()
- await validator.expectConnected()
- await validator.expectAuthenticated()
+ const mailsacApiKey = process.env['MAILSAC_API_KEY']
+ if (!mailsacApiKey) {
+ throw new Error('MAILSAC_API_KEY is not set')
+ }
+ const email = new Email(mailsacApiKey)
+
+ const getEmailAddressToUse = new Date()
+ const tempEmail = await email.getEmailAddressToUse()
+ beforeAllTimingRecords.push({
+ item: 'getEmailAddressToUse',
+ timeMs: new Date().getTime() - getEmailAddressToUse.getTime()
+ })
+
+ // Iframe should not be injected until needed
+ validator.expectSecureSiteFrameNotInjected()
+
+ const emailFlow = new Date()
+ await page.emailFlow({
+ emailAddress: tempEmail,
+ context,
+ mailsacApiKey,
+ timingRecords: beforeAllTimingRecords
+ })
+ beforeAllTimingRecords.push({
+ item: 'emailFlow',
+ timeMs: new Date().getTime() - emailFlow.getTime()
+ })
+
+ if (library === 'solana') {
+ const promptSiwe = new Date()
+ await page.promptSiwe()
beforeAllTimingRecords.push({
- item: 'expectConnected',
- timeMs: new Date().getTime() - startExpectConnected.getTime()
+ item: 'promptSiwe',
+ timeMs: new Date().getTime() - promptSiwe.getTime()
})
+ const approveSign = new Date()
+ await page.approveSign()
beforeAllTimingRecords.push({
- item: 'beforeAll',
- timeMs: new Date().getTime() - start.getTime()
- })
- } catch (error) {
- // Capture the error for metric reporting
- beforeAllError = error as Error
- beforeAllTimingRecords.push({
- item: 'beforeAll',
- timeMs: new Date().getTime() - start.getTime()
+ item: 'approveSign',
+ timeMs: new Date().getTime() - approveSign.getTime()
})
- // Re-throw to maintain test failure behavior
- throw error
}
+
+ const startExpectConnected = new Date()
+ await validator.expectConnected()
+ await validator.expectAuthenticated()
+ beforeAllTimingRecords.push({
+ item: 'expectConnected',
+ timeMs: new Date().getTime() - startExpectConnected.getTime()
+ })
+
+ beforeAllTimingRecords.push({
+ item: 'beforeAll',
+ timeMs: new Date().getTime() - start.getTime()
+ })
})
emailSiweTest.afterAll(async () => {
@@ -112,22 +99,6 @@ emailSiweTest.afterEach(async ({ browserName, timingRecords }, testInfo) => {
if (browserName === 'firefox') {
return
}
-
- // If beforeAll failed, report that failure for the first test
- if (beforeAllError && testInfo.status === 'skipped') {
- // Override the test status to 'failed' and report the beforeAll failure
- const modifiedTestInfo = {
- ...testInfo,
- status: 'failed' as const,
- duration: beforeAllTimingRecords.find(r => r.item === 'beforeAll')?.timeMs || 0
- }
- await afterEachCanary(modifiedTestInfo, beforeAllTimingRecords)
- // Clear the error so we only report it once
- beforeAllError = undefined
-
- return
- }
-
await afterEachCanary(testInfo, timingRecords)
})
diff --git a/apps/laboratory/tests/siwx-extension.spec.ts b/apps/laboratory/tests/siwx-extension.spec.ts
index ac79504368..fb2860f2f8 100644
--- a/apps/laboratory/tests/siwx-extension.spec.ts
+++ b/apps/laboratory/tests/siwx-extension.spec.ts
@@ -56,7 +56,7 @@ extensionTest(
extensionTest(
'it should fallback to the last session when cancel siwe from AppKit',
async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
diff --git a/apps/laboratory/tests/smart-account.spec.ts b/apps/laboratory/tests/smart-account.spec.ts
index b1eff10896..3b403635d4 100644
--- a/apps/laboratory/tests/smart-account.spec.ts
+++ b/apps/laboratory/tests/smart-account.spec.ts
@@ -57,7 +57,6 @@ smartAccountTest('it should use a smart account', async () => {
await validator.expectConnected()
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
await page.closeModal()
})
@@ -110,7 +109,6 @@ smartAccountTest('it should switch to smart account and sign', async ({ library
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
await page.togglePreferredAccountType()
await validator.expectChangePreferredAccountToShow(EOA)
@@ -133,7 +131,6 @@ smartAccountTest('it should switch to eoa and sign', async ({ library }) => {
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
await page.togglePreferredAccountType()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
@@ -156,7 +153,6 @@ smartAccountTest(
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
await page.closeModal()
@@ -166,7 +162,6 @@ smartAccountTest(
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
await page.closeModal()
}
@@ -183,7 +178,6 @@ smartAccountTest(
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await page.togglePreferredAccountType()
await validator.expectChangePreferredAccountToShow(EOA)
@@ -192,7 +186,6 @@ smartAccountTest(
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await validator.expectChangePreferredAccountToShow(EOA)
await page.closeModal()
}
@@ -222,10 +215,8 @@ smartAccountTest('it should be able to switch after disconnecting', async ({ lib
await page.openProfileWalletsView()
await page.clickProfileWalletsMoreButton()
- await page.clickSmartAccountSettingsButton()
await page.togglePreferredAccountType()
await validator.expectChangePreferredAccountToShow(SMART_ACCOUNT)
- await page.goBack()
await page.disconnect()
await validator.expectDisconnected()
})
diff --git a/apps/laboratory/tests/wallet-button.spec.ts b/apps/laboratory/tests/wallet-button.spec.ts
index 459c6e794b..99b2ef71b6 100644
--- a/apps/laboratory/tests/wallet-button.spec.ts
+++ b/apps/laboratory/tests/wallet-button.spec.ts
@@ -52,7 +52,7 @@ walletButtonTest('it should be connected after page refresh', async () => {
})
walletButtonTest('it should connect with email', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
diff --git a/apps/laboratory/tests/wallet-features.spec.ts b/apps/laboratory/tests/wallet-features.spec.ts
index d61442158e..154b2ee811 100644
--- a/apps/laboratory/tests/wallet-features.spec.ts
+++ b/apps/laboratory/tests/wallet-features.spec.ts
@@ -71,18 +71,14 @@ walletFeaturesTest('it should initialize swap as expected', async () => {
.getByTestId('swap-select-token-search-input')
.getByPlaceholder('Search token')
.fill('ETH')
- const swapItemLocator = page.page.getByTestId('swap-select-token-item-ETH')
- await swapItemLocator.waitFor({ state: 'visible', timeout: 10_000 })
- await swapItemLocator.click()
+ await page.page.getByTestId('swap-select-token-item-ETH').click()
await selectToTokenButton.click()
await page.page
.getByTestId('swap-select-token-search-input')
.getByPlaceholder('Search token')
.fill('USDC')
- const usdcItemLocator = page.page.getByTestId('swap-select-token-item-USDC')
- await usdcItemLocator.waitFor({ state: 'visible', timeout: 10_000 })
- await usdcItemLocator.click()
+ await page.page.getByTestId('swap-select-token-item-USDC').click()
await expect(swapActionButton).toHaveText('Enter amount')
diff --git a/apps/laboratory/tests/wallet.spec.ts b/apps/laboratory/tests/wallet.spec.ts
index 54a44ef73e..d94617b32e 100644
--- a/apps/laboratory/tests/wallet.spec.ts
+++ b/apps/laboratory/tests/wallet.spec.ts
@@ -57,7 +57,7 @@ sampleWalletTest('it should show onramp button accordingly', async ({ library })
const accountButton = await modalPage.getDefaultWalletFeaturesButton('fund-wallet')
await accountButton.click()
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
await modalValidator.expectOnrampButton(false)
} else {
await modalValidator.expectOnrampButton(true)
@@ -71,7 +71,7 @@ sampleWalletTest('it should be connected instantly after page refresh', async ()
})
sampleWalletTest('it should show disabled networks', async ({ library }) => {
- if (library === 'bitcoin' || library === 'ton') {
+ if (library === 'bitcoin') {
return
}
@@ -194,7 +194,6 @@ sampleWalletTest('it should switch between multiple accounts', async ({ library
const originalAddress = await modalPage.getAddress()
await modalPage.openProfileWalletsView()
await modalPage.switchAccount()
- await modalPage.page.waitForTimeout(1000)
await modalPage.closeModal()
await modalValidator.expectAccountSwitched(originalAddress)
})
@@ -228,7 +227,7 @@ sampleWalletTest('it should disconnect and connect to a single account', async (
sampleWalletTest(
'it should show switch network modal if network is not supported and switch to supported network',
async ({ library }) => {
- if (library === 'solana' || library === 'bitcoin' || library === 'ton') {
+ if (library === 'solana' || library === 'bitcoin') {
return
}
@@ -247,7 +246,7 @@ sampleWalletTest(
sampleWalletTest(
"it should switch to first available network when wallet doesn't support the active network of the appkit and sign message",
async ({ library }) => {
- if (library === 'solana' || library === 'bitcoin' || library === 'ton') {
+ if (library === 'solana' || library === 'bitcoin') {
return
}
@@ -260,8 +259,10 @@ sampleWalletTest(
await modalPage.qrCodeFlow(modalPage, walletPage)
await modalValidator.expectConnected()
-
- await modalValidator.expectNetworkButton('Ethereum')
+ await modalPage.openModal()
+ await modalPage.openNetworks()
+ await modalValidator.expectSwitchedNetwork('Ethereum')
+ await modalPage.closeModal()
await modalPage.sign()
await walletPage.handleRequest({ accept: true })
await modalValidator.expectAcceptedSign()
diff --git a/apps/pay-test-exchange/CHANGELOG.md b/apps/pay-test-exchange/CHANGELOG.md
index 93d8fe5c31..edb67dac6f 100644
--- a/apps/pay-test-exchange/CHANGELOG.md
+++ b/apps/pay-test-exchange/CHANGELOG.md
@@ -1,5 +1,19 @@
# pay-test-exchange
+## 0.1.19
+
+### Patch Changes
+
+- [#5378](https://github.com/reown-com/appkit/pull/5378) [`2867bfd`](https://github.com/reown-com/appkit/commit/2867bfd3f06394e559b918d46dc379dd498d1abf) Thanks [@magiziz](https://github.com/magiziz)! - Fixed an issue where profile wallets tabs were shown in the wrong order
+
+- [#5364](https://github.com/reown-com/appkit/pull/5364) [`d186212`](https://github.com/reown-com/appkit/commit/d1862126d3b7da93b52b99a4d709656311926c34) Thanks [@magiziz](https://github.com/magiziz)! - Fixed an issue where wallet buttons were not working in the in-app wallet browser
+
+## 0.1.18
+
+### Patch Changes
+
+- [#5296](https://github.com/reown-com/appkit/pull/5296) [`bc4a961`](https://github.com/reown-com/appkit/commit/bc4a961b448cedd0a8485a2188549b413b4e6512) Thanks [@magiziz](https://github.com/magiziz)! - Improved wallet search to filter out non-walletconnect and walletconnect wallets based on platform and SDK type
+
## 0.1.17
### Patch Changes
diff --git a/apps/pay-test-exchange/package.json b/apps/pay-test-exchange/package.json
index 16ce872431..61ddeb9cd3 100644
--- a/apps/pay-test-exchange/package.json
+++ b/apps/pay-test-exchange/package.json
@@ -1,6 +1,6 @@
{
"name": "pay-test-exchange",
- "version": "0.1.17",
+ "version": "0.1.19",
"private": true,
"scripts": {
"dev": "next dev --turbopack --port 4001",
@@ -19,10 +19,10 @@
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"lucide-react": "0.525.0",
- "next": "15.3.5",
+ "next": "15.3.8",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
+ "react": "19.1.2",
+ "react-dom": "19.1.2",
"tailwind-merge": "3.3.1",
"tailwindcss-animate": "1.0.7"
},
diff --git a/examples/html-ak-basic-sign-client/package.json b/examples/html-ak-basic-sign-client/package.json
index 8b5553242e..3533a5ca78 100644
--- a/examples/html-ak-basic-sign-client/package.json
+++ b/examples/html-ak-basic-sign-client/package.json
@@ -8,10 +8,10 @@
},
"dependencies": {
"@reown/appkit": "workspace:*",
- "@walletconnect/sign-client": "2.23.0",
+ "@walletconnect/sign-client": "2.21.7",
"bs58": "6.0.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-ak-basic-up/package.json b/examples/html-ak-basic-up/package.json
index 3d56809395..1deae697c3 100644
--- a/examples/html-ak-basic-up/package.json
+++ b/examples/html-ak-basic-up/package.json
@@ -8,10 +8,10 @@
},
"dependencies": {
"@reown/appkit": "workspace:*",
- "@walletconnect/universal-provider": "2.23.0",
+ "@walletconnect/universal-provider": "2.21.7",
"bs58": "6.0.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-ak-basic/package.json b/examples/html-ak-basic/package.json
index 1d54b14cce..83c243fc06 100644
--- a/examples/html-ak-basic/package.json
+++ b/examples/html-ak-basic/package.json
@@ -11,7 +11,7 @@
"bs58": "6.0.0"
},
"devDependencies": {
- "vite": "5.4.20",
+ "vite": "5.4.19",
"rollup-plugin-visualizer": "5.14.0"
}
}
diff --git a/examples/html-bitcoin/package.json b/examples/html-bitcoin/package.json
index d0a065b1f0..6c30f8ed27 100644
--- a/examples/html-bitcoin/package.json
+++ b/examples/html-bitcoin/package.json
@@ -11,6 +11,6 @@
"@reown/appkit": "workspace:*"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-ep/package.json b/examples/html-ep/package.json
index 12f5e7d9c7..52cbfe60d8 100644
--- a/examples/html-ep/package.json
+++ b/examples/html-ep/package.json
@@ -7,9 +7,9 @@
"build": "vite build"
},
"dependencies": {
- "@walletconnect/ethereum-provider": "2.23.0"
+ "@walletconnect/ethereum-provider": "2.21.7"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-ethers/package.json b/examples/html-ethers/package.json
index e9f7e9cf63..54ac440718 100644
--- a/examples/html-ethers/package.json
+++ b/examples/html-ethers/package.json
@@ -12,6 +12,6 @@
"ethers": "6.14.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-solana/package.json b/examples/html-solana/package.json
index ffee238215..952d10c862 100644
--- a/examples/html-solana/package.json
+++ b/examples/html-solana/package.json
@@ -11,6 +11,6 @@
"@reown/appkit": "workspace:*"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-wagmi-solana-bitcoin/package.json b/examples/html-wagmi-solana-bitcoin/package.json
index 8badd9600b..efa14e9843 100644
--- a/examples/html-wagmi-solana-bitcoin/package.json
+++ b/examples/html-wagmi-solana-bitcoin/package.json
@@ -14,6 +14,6 @@
"ethers": "6.14.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-wagmi-wallet-button/package.json b/examples/html-wagmi-wallet-button/package.json
index e0be93d850..411d0b3297 100644
--- a/examples/html-wagmi-wallet-button/package.json
+++ b/examples/html-wagmi-wallet-button/package.json
@@ -13,6 +13,6 @@
"ethers": "6.14.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/html-wagmi/package.json b/examples/html-wagmi/package.json
index cf83df4bcd..0a3c5eb703 100644
--- a/examples/html-wagmi/package.json
+++ b/examples/html-wagmi/package.json
@@ -12,6 +12,6 @@
"ethers": "6.14.0"
},
"devDependencies": {
- "vite": "5.4.20"
+ "vite": "5.4.19"
}
}
diff --git a/examples/next-ak-basic-app-router/package.json b/examples/next-ak-basic-app-router/package.json
index 0065f61feb..60d7afcf27 100644
--- a/examples/next-ak-basic-app-router/package.json
+++ b/examples/next-ak-basic-app-router/package.json
@@ -11,18 +11,18 @@
"dependencies": {
"@reown/appkit": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "next": "14.2.32",
+ "next": "14.2.30",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-ak-basic-sign-client-app-router/package.json b/examples/next-ak-basic-sign-client-app-router/package.json
index 398c5b55d8..e2c683c63d 100644
--- a/examples/next-ak-basic-sign-client-app-router/package.json
+++ b/examples/next-ak-basic-sign-client-app-router/package.json
@@ -11,20 +11,20 @@
"dependencies": {
"@reown/appkit": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@walletconnect/sign-client": "2.23.0",
- "@walletconnect/types": "2.23.0",
- "next": "14.2.32",
+ "@walletconnect/sign-client": "2.21.7",
+ "@walletconnect/types": "2.21.7",
+ "next": "14.2.30",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-ak-basic-up-app-router/package.json b/examples/next-ak-basic-up-app-router/package.json
index 9ebbb34472..097d6c9034 100644
--- a/examples/next-ak-basic-up-app-router/package.json
+++ b/examples/next-ak-basic-up-app-router/package.json
@@ -11,19 +11,19 @@
"dependencies": {
"@reown/appkit": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@walletconnect/universal-provider": "2.23.0",
- "next": "14.2.32",
+ "@walletconnect/universal-provider": "2.21.7",
+ "next": "14.2.30",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-appkit-headless/package.json b/examples/next-appkit-headless/package.json
index 325bfa5b60..fe575d495e 100644
--- a/examples/next-appkit-headless/package.json
+++ b/examples/next-appkit-headless/package.json
@@ -22,10 +22,10 @@
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"lucide-react": "0.525.0",
- "next": "15.6.0-canary.29",
+ "next": "15.5.9",
"next-themes": "0.4.6",
- "react": "19.2.0",
- "react-dom": "19.2.0",
+ "react": "19.2.1",
+ "react-dom": "19.2.1",
"react-qr-code": "2.0.18",
"sonner": "1.7.4",
"tailwind-merge": "3.3.1"
diff --git a/examples/next-bitcoin-app-router/package.json b/examples/next-bitcoin-app-router/package.json
index 61d946a0e7..23372cfef4 100644
--- a/examples/next-bitcoin-app-router/package.json
+++ b/examples/next-bitcoin-app-router/package.json
@@ -13,20 +13,20 @@
"@reown/appkit-adapter-bitcoin": "workspace:*",
"@reown/appkit-adapter-wagmi": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@wagmi/core": "2.21.2",
- "next": "14.2.32",
+ "@wagmi/core": "2.20.3",
+ "next": "14.2.30",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9",
- "wagmi": "2.17.5"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-ep-app-router/package.json b/examples/next-ep-app-router/package.json
index 19eefabbfb..3d98b4b5ec 100644
--- a/examples/next-ep-app-router/package.json
+++ b/examples/next-ep-app-router/package.json
@@ -10,19 +10,19 @@
},
"dependencies": {
"@reown/appkit": "workspace:*",
- "@walletconnect/ethereum-provider": "2.23.0",
- "next": "14.2.32",
+ "@walletconnect/ethereum-provider": "2.21.7",
+ "next": "14.2.35",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-ethers-app-router/package.json b/examples/next-ethers-app-router/package.json
index d05ada03e1..5819da3e34 100644
--- a/examples/next-ethers-app-router/package.json
+++ b/examples/next-ethers-app-router/package.json
@@ -12,20 +12,20 @@
"@reown/appkit": "workspace:*",
"@reown/appkit-adapter-ethers": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@wagmi/core": "2.21.2",
- "next": "14.2.32",
+ "@wagmi/core": "2.20.3",
+ "next": "14.2.35",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9",
- "wagmi": "2.17.5"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-wagmi-app-router/package.json b/examples/next-wagmi-app-router/package.json
index 5da02f2053..353bb4210f 100644
--- a/examples/next-wagmi-app-router/package.json
+++ b/examples/next-wagmi-app-router/package.json
@@ -12,20 +12,20 @@
"@reown/appkit": "workspace:*",
"@reown/appkit-adapter-wagmi": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@wagmi/core": "2.21.2",
- "next": "14.2.32",
+ "@wagmi/core": "2.20.3",
+ "next": "14.2.35",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9",
- "wagmi": "2.17.5"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/next-wagmi-solana-bitcoin-app-router/package.json b/examples/next-wagmi-solana-bitcoin-app-router/package.json
index 7f1b62bab5..94507c31f2 100644
--- a/examples/next-wagmi-solana-bitcoin-app-router/package.json
+++ b/examples/next-wagmi-solana-bitcoin-app-router/package.json
@@ -14,20 +14,20 @@
"@reown/appkit-adapter-solana": "workspace:*",
"@reown/appkit-adapter-wagmi": "workspace:*",
"@tanstack/react-query": "5.75.5",
- "@wagmi/core": "2.21.2",
- "next": "14.2.32",
+ "@wagmi/core": "2.20.3",
+ "next": "14.2.35",
"next-themes": "0.4.6",
- "react": "19.1.1",
- "react-dom": "19.1.1",
- "viem": "2.37.9",
- "wagmi": "2.17.5"
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "viem": "2.37.2",
+ "wagmi": "2.16.9"
},
"devDependencies": {
"@types/node": "22.13.4",
- "@types/react": "19.1.15",
- "@types/react-dom": "19.1.9",
+ "@types/react": "19.1.3",
+ "@types/react-dom": "19.1.3",
"esbuild": "0.25.1",
"eslint-config-next": "14.1.0",
- "typescript": "5.9.2"
+ "typescript": "5.8.3"
}
}
diff --git a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/builds.json b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/builds.json
index 92aab1ab03..e11cef98fa 100644
--- a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/builds.json
+++ b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/builds.json
@@ -1,7 +1,11 @@
{
"//": "This file was generated by the `vercel build` command. It is not part of the Build Output API.",
"target": "preview",
- "argv": ["/usr/bin/node", "/usr/local/bin/vercel", "build"],
+ "argv": [
+ "/usr/bin/node",
+ "/usr/local/bin/vercel",
+ "build"
+ ],
"builds": [
{
"require": "@vercel/static-build",
diff --git a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/diagnostics/cli_traces.json b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/diagnostics/cli_traces.json
index d2090fa6f9..8a85bf7960 100644
--- a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/diagnostics/cli_traces.json
+++ b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/diagnostics/cli_traces.json
@@ -1,37 +1 @@
-[
- {
- "name": "vc.builder",
- "duration": 145152893,
- "timestamp": 17711467311,
- "id": "859e53bd-09de-457c-9e73-48ba18b332a8",
- "parentId": "0a82f6f4-3408-4e5f-816b-796036519658",
- "tags": { "name": "@vercel/static-build" },
- "startTime": 1745232301436
- },
- {
- "name": "vc.builder.diagnostics",
- "duration": 74,
- "timestamp": 17856620706,
- "id": "1c028796-cb5b-4a29-81dc-81ee7235bfef",
- "parentId": "859e53bd-09de-457c-9e73-48ba18b332a8",
- "tags": {},
- "startTime": 1745232446589
- },
- {
- "name": "vc.doBuild",
- "duration": 146517738,
- "timestamp": 17710133238,
- "id": "0a82f6f4-3408-4e5f-816b-796036519658",
- "parentId": "163e0ae8-60b2-42e0-9d0f-3d8b5c88d644",
- "tags": {},
- "startTime": 1745232300101
- },
- {
- "name": "vc",
- "duration": 150856022,
- "timestamp": 17705794999,
- "id": "163e0ae8-60b2-42e0-9d0f-3d8b5c88d644",
- "tags": {},
- "startTime": 1745232295763
- }
-]
+[{"name":"vc.builder","duration":145152893,"timestamp":17711467311,"id":"859e53bd-09de-457c-9e73-48ba18b332a8","parentId":"0a82f6f4-3408-4e5f-816b-796036519658","tags":{"name":"@vercel/static-build"},"startTime":1745232301436},{"name":"vc.builder.diagnostics","duration":74,"timestamp":17856620706,"id":"1c028796-cb5b-4a29-81dc-81ee7235bfef","parentId":"859e53bd-09de-457c-9e73-48ba18b332a8","tags":{},"startTime":1745232446589},{"name":"vc.doBuild","duration":146517738,"timestamp":17710133238,"id":"0a82f6f4-3408-4e5f-816b-796036519658","parentId":"163e0ae8-60b2-42e0-9d0f-3d8b5c88d644","tags":{},"startTime":1745232300101},{"name":"vc","duration":150856022,"timestamp":17705794999,"id":"163e0ae8-60b2-42e0-9d0f-3d8b5c88d644","tags":{},"startTime":1745232295763}]
\ No newline at end of file
diff --git a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/.vc-config.json b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/.vc-config.json
index 8fa2fa648d..42d8e1b7d1 100644
--- a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/.vc-config.json
+++ b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/.vc-config.json
@@ -4,4 +4,4 @@
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true
-}
+}
\ No newline at end of file
diff --git a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/chunks/_/error-500.mjs b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/chunks/_/error-500.mjs
index d1a879af25..4220293b21 100644
--- a/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/chunks/_/error-500.mjs
+++ b/examples/nuxt-wagmi-solana-bitcoin/.vercel/output/functions/__nitro.func/chunks/_/error-500.mjs
@@ -1,26 +1,8 @@
-const _messages = {
- appName: 'Nuxt',
- version: '',
- statusCode: 500,
- statusMessage: 'Server error',
- description: 'This page is temporarily unavailable.'
-}
-const template = messages => {
- messages = { ..._messages, ...messages }
- return (
- '' +
- messages.statusCode +
- ' - ' +
- messages.statusMessage +
- ' | ' +
- messages.appName +
- `