UNPKG

@coinbase/onchaintestkit

Version:

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

107 lines (106 loc) 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CoinbaseFixturesBuilder = CoinbaseFixturesBuilder; const test_1 = require("@playwright/test"); const _1 = require("."); const LocalNodeManager_1 = require("../../node/LocalNodeManager"); const createTempDir_1 = require("../../utils/createTempDir"); const extensionManager_1 = require("../../utils/extensionManager"); const removeTempDir_1 = require("../../utils/removeTempDir"); let sharedCoinbasePage; function CoinbaseFixturesBuilder(walletConfig, nodeConfig) { return test_1.test.extend({ // Add node fixture that will start before any wallet setup node: nodeConfig ? [ async ({}, use) => { try { const node = new LocalNodeManager_1.LocalNodeManager(nodeConfig); await node.start(); console.log(`Node is ready on port ${node.port}`); await use(node); console.log("Node stopping..."); await node.stop(); } catch (error) { console.error("Error in node fixture:", error); throw error; } }, { scope: "test", auto: true }, ] : undefined, _contextPath: async ({}, use, testInfo) => { const contextPath = await (0, createTempDir_1.createTempDir)(testInfo.testId); await use(contextPath); const error = await (0, removeTempDir_1.removeTempDir)(contextPath); if (error) { console.error(error); } }, context: async ({ context: currentContext, _contextPath }, use) => { try { const { coinbaseContext, coinbasePage } = await _1.CoinbaseWallet.initialize(currentContext, _contextPath, walletConfig); sharedCoinbasePage = coinbasePage; await use(coinbaseContext); await coinbaseContext.close(); } catch (error) { console.error("Error in context fixture:", error); throw error; } }, coinbasePage: async ({ context: _ }, use) => { await use(sharedCoinbasePage); }, extensionId: async ({ context }, use) => { try { const extensionId = await (0, extensionManager_1.getExtensionId)(context, "Coinbase Wallet extension"); await use(extensionId); } catch (error) { console.error("Error in extensionId fixture:", error); throw error; } }, coinbase: [ async ({ context, extensionId }, use) => { try { const coinbase = new _1.CoinbaseWallet(walletConfig, context, sharedCoinbasePage, extensionId); await use(coinbase); } catch (error) { console.error("Error in coinbase fixture:", error); throw error; } }, { scope: "test", auto: true }, ], setupWallet: [ async ({ coinbase, node }, use) => { try { console.log("Running wallet setup..."); await walletConfig.walletSetup(coinbase, { localNodePort: node.port, }); await use(null); } catch (error) { console.error("Error in setupWallet fixture:", error); throw error; } }, { scope: "test", auto: true }, ], page: async ({ page }, use) => { try { await page.goto("/"); await use(page); } catch (error) { console.error("Error in page fixture:", error); throw error; } }, }); }