UNPKG

@coinbase/onchaintestkit

Version:

End-to-end testing toolkit for blockchain applications, powered by Playwright

47 lines (46 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExtensionId = getExtensionId; /** * Get extension ID from browser context using Chrome management API * Simple implementation without retry logic or caching */ async function getExtensionId(context, extensionName) { const page = await context.newPage(); try { // Navigate to chrome://extensions to get access to the management API await page.goto("chrome://extensions/"); const extensions = await page.evaluate(() => { return new Promise((resolve, reject) => { if (!window.chrome?.management?.getAll) { reject(new Error("Chrome management API not available")); return; } window.chrome.management.getAll((extensions) => { if (window.chrome?.runtime?.lastError) { reject(new Error(`Chrome management API error: ${window.chrome.runtime.lastError.message}`)); return; } const extensionData = extensions .filter((ext) => ext.type === "extension") .map((ext) => ({ id: ext.id, name: ext.name, enabled: ext.enabled, })); resolve(extensionData); }); }); }); // Find extension by name (case-insensitive contains match) const extension = extensions.find(ext => ext.name.toLowerCase().includes(extensionName.toLowerCase())); if (!extension) { const availableNames = extensions.map(ext => ext.name).join(", "); throw new Error(`Extension "${extensionName}" not found. Available extensions: ${availableNames}`); } return extension.id; } finally { await page.close(); } }