The approval window was opened 360 pixels wide while the page is 396, so it scrolled sideways and cut off the Reject button. It now opens at 396. Both browsers count the window's frame in that width, so the approval page also widens its own window by however far it would scroll sideways; the toolbar popup's window is left alone. The Firefox suite checks that the sign prompt does not scroll sideways. The Chrome suite cannot: its approval windows open at 1280x720 whatever size is asked. README's Visual Style line, which still said 360x600, now gives the page's real width. Model: opus-5-5
95 lines
3.1 KiB
JavaScript
95 lines
3.1 KiB
JavaScript
// 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([]);
|
|
});
|
|
|
|
// The background opens the approval window as wide as the page, but the
|
|
// browser counts the window's frame in that width
|
|
// (https://git.eeqj.de/sneak/AutistMask/issues/518). The browser suites run
|
|
// without frames, so the widening is checked here.
|
|
function windowsStub(type) {
|
|
const updates = [];
|
|
return {
|
|
updates,
|
|
getCurrent: (done) => done({ id: 7, type, width: 396 }),
|
|
update: (id, info, done) => {
|
|
updates.push({ id, info });
|
|
done({});
|
|
},
|
|
};
|
|
}
|
|
|
|
const approvalRuntime = {
|
|
connect: () => ({ postMessage: () => {} }),
|
|
sendMessage: () => {},
|
|
};
|
|
|
|
test("the approval window widens itself by whatever its frame takes", async () => {
|
|
const windows = windowsStub("popup");
|
|
const env = await bootPopup(unversionedValidProfile(), {
|
|
search: "?approval=approval-1",
|
|
runtime: approvalRuntime,
|
|
windows,
|
|
documentElement: { scrollWidth: 396, clientWidth: 380 },
|
|
});
|
|
|
|
expect(windows.updates).toEqual([{ id: 7, info: { width: 412 } }]);
|
|
expect(env.pageErrors).toEqual([]);
|
|
});
|
|
|
|
test("a connection prompt in the toolbar popup leaves the browser window alone", async () => {
|
|
const windows = windowsStub("normal");
|
|
const env = await bootPopup(unversionedValidProfile(), {
|
|
search: "?approval=approval-1",
|
|
runtime: approvalRuntime,
|
|
windows,
|
|
documentElement: { scrollWidth: 396, clientWidth: 380 },
|
|
});
|
|
|
|
expect(windows.updates).toEqual([]);
|
|
expect(env.pageErrors).toEqual([]);
|
|
});
|