Skip to content

Commit 7746266

Browse files
committed
push
1 parent f10b66e commit 7746266

2 files changed

Lines changed: 68 additions & 1 deletion

File tree

commands/playwright.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,73 @@ module.exports = {
160160
log(`[assignWindows] Page ${i}: Error getting URL - ${error.message}`);
161161
}
162162
}
163+
164+
// 检查是否有MetaMask扩展页面
165+
const hasMetamaskPage = pages.some(page => {
166+
try {
167+
return page.url().includes(`chrome-extension://${metamaskExtensionId}`);
168+
} catch (e) {
169+
return false;
170+
}
171+
});
172+
173+
if (!hasMetamaskPage) {
174+
log('[assignWindows] No MetaMask pages found, attempting to open MetaMask extension...');
175+
try {
176+
// 尝试打开MetaMask扩展页面
177+
const metamaskPage = await browser.contexts()[0].newPage();
178+
await metamaskPage.goto(`chrome-extension://${metamaskExtensionId}/home.html`);
179+
log('[assignWindows] MetaMask extension page opened successfully');
180+
181+
// 重新获取页面列表
182+
pages = await browser.contexts()[0].pages();
183+
log(`[assignWindows] After opening MetaMask, found ${pages.length} pages in browser context`);
184+
185+
// 重新记录所有页面URL
186+
for (let i = 0; i < pages.length; i++) {
187+
try {
188+
const url = pages[i].url();
189+
log(`[assignWindows] New Page ${i}: ${url}`);
190+
} catch (error) {
191+
log(`[assignWindows] New Page ${i}: Error getting URL - ${error.message}`);
192+
}
193+
}
194+
} catch (error) {
195+
log(`[assignWindows] Failed to open MetaMask extension: ${error.message}`);
196+
197+
// 备选方案:尝试通过chrome://extensions/页面访问MetaMask
198+
try {
199+
log('[assignWindows] Trying alternative approach via chrome://extensions/...');
200+
const extensionsPage = await browser.contexts()[0].newPage();
201+
await extensionsPage.goto('chrome://extensions/');
202+
log('[assignWindows] Opened chrome://extensions/ page');
203+
204+
// 等待一下让页面加载
205+
await new Promise(resolve => setTimeout(resolve, 2000));
206+
207+
// 重新获取页面列表
208+
pages = await browser.contexts()[0].pages();
209+
log(`[assignWindows] After opening extensions page, found ${pages.length} pages in browser context`);
210+
211+
// 再次检查是否有MetaMask页面
212+
const hasMetamaskPageAfterExtensions = pages.some(page => {
213+
try {
214+
return page.url().includes(`chrome-extension://${metamaskExtensionId}`);
215+
} catch (e) {
216+
return false;
217+
}
218+
});
219+
220+
if (hasMetamaskPageAfterExtensions) {
221+
log('[assignWindows] MetaMask pages found after opening extensions page');
222+
} else {
223+
log('[assignWindows] Still no MetaMask pages found after opening extensions page');
224+
}
225+
} catch (extensionsError) {
226+
log(`[assignWindows] Failed to open chrome://extensions/: ${extensionsError.message}`);
227+
}
228+
}
229+
}
163230

164231
let mainWindowAssigned = false;
165232
let metamaskWindowAssigned = false;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gracefnr/synpress",
3-
"version": "1.0.26",
3+
"version": "1.0.27",
44
"packageManager": "pnpm@9.1.3",
55
"description": "Synpress is e2e testing framework based around Cypress.io & playwright with included MetaMask support. Test your dapps with ease.",
66
"keywords": [

0 commit comments

Comments
 (0)