@coinbase/onchaintestkit
Version:
End-to-end testing toolkit for blockchain applications, powered by Playwright
33 lines (32 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletState = void 0;
exports.getWalletState = getWalletState;
const utils_1 = require("../../../utils");
var WalletState;
(function (WalletState) {
WalletState["LOCKED"] = "locked";
WalletState["UNLOCKED"] = "unlocked";
WalletState["ONBOARDING"] = "onboarding";
})(WalletState || (exports.WalletState = WalletState = {}));
async function getWalletState(page) {
// Wait for MetaMask UI to be fully loaded
await page.waitForLoadState("domcontentloaded");
await page.waitForLoadState("networkidle");
// Wait for any loading indicators to disappear (including MetaMask-specific ones)
await utils_1.LoadingStateDetector.waitForPageLoadingComplete(page, 5000, [
{ selector: ".loading-logo", description: "MetaMask loading logo" },
{ selector: ".loading-overlay", description: "MetaMask loading overlay" },
]);
const selectors = {
[WalletState.LOCKED]: ".unlock-page",
[WalletState.ONBOARDING]: ".onboarding-flow",
[WalletState.UNLOCKED]: ".home__container",
};
for (const [state, selector] of Object.entries(selectors)) {
if (await page.locator(selector).isVisible()) {
return state;
}
}
throw new Error("Unable to determine wallet state");
}