@cygnus-wealth/wallet-integration-system
Version:
Multi-chain wallet integration system for CygnusWealth
93 lines (92 loc) โข 3.71 kB
JavaScript
import puppeteer from 'puppeteer';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
async function testMetaMaskIntegration() {
console.log('๐ Starting simple MetaMask test...');
const extensionPath = path.join(__dirname, 'extensions', 'metamask-11.16.0');
console.log('๐ Extension path:', extensionPath);
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
'--no-sandbox'
],
defaultViewport: { width: 1280, height: 800 }
});
try {
// Wait for extension to load
console.log('โณ Waiting for extension to load...');
await new Promise(resolve => setTimeout(resolve, 5000));
// Get all pages
const pages = await browser.pages();
console.log(`๐ Found ${pages.length} pages`);
// Find MetaMask page
let metamaskPage = null;
for (const page of pages) {
const url = page.url();
console.log(' - Page URL:', url);
if (url.includes('chrome-extension://')) {
metamaskPage = page;
break;
}
}
if (!metamaskPage) {
// Try opening MetaMask directly
console.log('๐ MetaMask not found in pages, trying to open...');
const targets = await browser.targets();
for (const target of targets) {
if (target.url().includes('chrome-extension://')) {
console.log(' - Found extension target:', target.url());
const matches = target.url().match(/chrome-extension:\/\/([a-z0-9]+)\//);
if (matches) {
const extensionId = matches[1];
metamaskPage = await browser.newPage();
await metamaskPage.goto(`chrome-extension://${extensionId}/home.html`);
break;
}
}
}
}
if (metamaskPage) {
console.log('โ
MetaMask page found!');
console.log('๐ URL:', metamaskPage.url());
// Take a screenshot
await metamaskPage.screenshot({ path: 'metamask-test.png' });
console.log('๐ธ Screenshot saved as metamask-test.png');
}
else {
console.log('โ Could not find MetaMask page');
}
// Create a test page
const testPage = await browser.newPage();
await testPage.goto('data:text/html,<h1>Wallet Test Page</h1><button id="connect">Connect Wallet</button>');
// Check if ethereum is available
const hasEthereum = await testPage.evaluate(() => {
return typeof window.ethereum !== 'undefined';
});
console.log('๐ Ethereum available:', hasEthereum);
if (hasEthereum) {
// Get provider info
const providerInfo = await testPage.evaluate(() => {
return {
isMetaMask: window.ethereum.isMetaMask,
chainId: window.ethereum.chainId,
selectedAddress: window.ethereum.selectedAddress
};
});
console.log('๐ Provider info:', providerInfo);
}
}
catch (error) {
console.error('โ Error:', error);
}
finally {
console.log('๐งน Cleaning up...');
await browser.close();
}
}
// Run the test
testMetaMaskIntegration().catch(console.error);