test: the popup boot in the jest suite sends no request to the internet (closes #559)
check / check (push) Canceled after 0s
e2e / e2e-chrome (push) Canceled after 0s
e2e / e2e-firefox (push) Canceled after 0s

bootPopup() in tests/support/popupBoot.js mocked three of the modules
that reach the network, but a boot onto the transaction screen still
asked Blockscout for its transaction, and a boot onto the confirmation
screen had src/shared/etherscanLabels.js look the recipient up on
Etherscan, both through the real fetch().
tests/persistedFieldContract.test.js boots onto both, so every run sent
those requests and logged their answers after its tests had finished.
bootPopup() now replaces fetch() with the throwing stub the rest of the
suite uses, and cleanupPopup() puts it back. tests/popupBoot.test.js
checks that both requests reach the stub.

Model: opus-5-5
This commit is contained in:
2026-10-19 05:58:42 +00:00
parent 1f5cdeb7b4
commit 871fa80234
2 changed files with 57 additions and 2 deletions
+45
View File
@@ -9,6 +9,7 @@ const {
bootPopup,
cleanupPopup,
unversionedValidProfile,
ADDRESS,
} = require("./support/popupBoot");
const FLASH_MS = 10;
@@ -40,3 +41,47 @@ test("a flash message's timer does not fire after cleanupPopup()", async () => {
await wait(FLASH_MS * 5);
});
// A boot onto a screen whose requests no mocked module answers: they reach the
// boot's fetch() stub, never the internet
// (https://git.eeqj.de/sneak/AutistMask/issues/559).
function restoringOnto(view, viewData) {
return unversionedValidProfile({
currentView: view,
selectedWallet: 0,
selectedAddress: 0,
viewStack: ["main"],
viewData,
});
}
test("the transaction screen's Blockscout request reaches the stub", async () => {
const page = await bootPopup(
restoringOnto("transaction", {
tx: { hash: "0x1", from: ADDRESS, to: ADDRESS },
}),
);
expect(page.visibleViews()).toEqual(["transaction"]);
expect(globalThis.fetch.mock.calls.map((call) => call[0])).toEqual([
"https://eth.blockscout.com/api/v2/transactions/0x1",
]);
});
test("the confirmation screen's Etherscan lookup reaches the stub", async () => {
const page = await bootPopup(
restoringOnto("confirm-tx", {
pendingTx: {
token: "ETH",
from: ADDRESS,
to: ADDRESS,
amount: "1",
},
}),
);
expect(page.visibleViews()).toEqual(["confirm-tx"]);
expect(globalThis.fetch.mock.calls.map((call) => call[0])).toEqual([
"https://etherscan.io/address/" + ADDRESS,
]);
});