UNPKG

@coinbase/onchaintestkit

Version:

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

54 lines (53 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.enableTestMode = enableTestMode; /** * Enables test mode in Phantom wallet to support testnets like Base Sepolia * @param page - The Playwright page object for the Phantom wallet */ async function enableTestMode(page) { // Check if running in CI const isCI = process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true"; // Check if page is closed before attempting any interactions if (page.isClosed()) { console.log("Phantom extension page is closed. Skipping test mode enablement."); return; } try { // Wait for the wallet UI to be ready await page.waitForLoadState("networkidle"); // Check again after waiting for load state if (page.isClosed()) { console.log("Phantom extension page closed after waiting for load state. Skipping test mode enablement."); return; } // Step 1: Click the "More" button (three dots menu) await page.click('button[aria-label="More"]'); await page.waitForLoadState("networkidle"); // Step 2: Click "Wallet Settings" using getByTestId await page.getByTestId("context-menu-item-Wallet Settings").click(); await page.waitForLoadState("networkidle"); // Step 3: Click "Developer Settings" using ID await page.click("button#settings-item-developer-settings"); await page.waitForLoadState("networkidle"); // Step 4: Click the "Testnet Mode" toggle using getByTestId await page.getByTestId("toggleTestNetwork").click(); await page.waitForLoadState("networkidle"); // Step 5: Click "Ethereum" to access network selection await page.click('button:has-text("Ethereum"):has-text("Ethereum Sepolia")'); await page.waitForLoadState("networkidle"); // Step 6: Select "Base Sepolia" await page.click('button:has-text("Base Sepolia")'); await page.waitForLoadState("networkidle"); // Short delay to allow UI to stabilize await page.waitForTimeout(2000); } catch (error) { console.error("Error enabling test mode:", error); // In CI, log and continue instead of throwing if (isCI) { console.log("⚠️ Skipping test mode enablement in CI due to extension page issues. This is expected in headless environments."); return; } } }