// The approval window shows no screen until the background has described the // approval it answers (https://git.eeqj.de/sneak/AutistMask/issues/408). The // connection prompt's "Allow" and the network switch prompt's "Switch" answer // on the same port, so a window that showed the connection prompt while it // waited could approve a network switch. // // Booted through the real popup entry point, which is where the connection // prompt used to be put up before the background had answered. const { bootPopup, cleanupPopup, settle, unversionedValidProfile, } = require("./support/popupBoot"); afterEach(cleanupPopup); test("the approval window shows no screen until the background describes the approval", async () => { // The background's answer, held until the test gives it. let answer = null; const env = await bootPopup(unversionedValidProfile(), { search: "?approval=approval-1", runtime: { connect: () => ({ postMessage: () => {} }), sendMessage: (msg, reply) => { if (msg.type === "AUTISTMASK_GET_APPROVAL") answer = reply; }, }, }); expect(answer).not.toBeNull(); // No screen at all, the connection prompt included. expect(env.visibleViews()).toEqual([]); answer({ type: "network", origin: "https://dapp.example", currentNetworkId: "mainnet", requestedNetworkId: "sepolia", isPhishingDomain: false, }); await settle(); expect(env.visibleViews()).toEqual(["approve-network"]); expect(env.pageErrors).toEqual([]); });