The RPC and Blockscout "Save" buttons in Settings now set the URL in the stored record, inside the save. The save writes only the fields that differ from what the page last saved. Before this change, a "Save" of the URL that this page loaded kept another page's different URL stored. Before this change, the flash message for that save read "Saved.". A save refused because the network changed still stores nothing. Model: opus-5-5
50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
// Another page stores a different RPC or Blockscout URL for the same network.
|
|
// Then the user taps "Save" in Settings on this page, on the URL that this page
|
|
// loaded. The URL on screen is stored, and the flash message reads "Saved."
|
|
// (https://git.eeqj.de/sneak/AutistMask/issues/688). Driven through the real
|
|
// popup over a stored profile on Ethereum Mainnet.
|
|
|
|
const {
|
|
bootPopup,
|
|
cleanupPopup,
|
|
unversionedValidProfile,
|
|
} = require("./support/popupBoot");
|
|
const { NETWORKS } = require("../src/shared/networks");
|
|
|
|
afterEach(() => {
|
|
cleanupPopup();
|
|
});
|
|
|
|
test.each([
|
|
{ button: "btn-save-rpc", input: "settings-rpc", field: "rpcUrl" },
|
|
{
|
|
button: "btn-save-blockscout",
|
|
input: "settings-blockscout",
|
|
field: "blockscoutUrl",
|
|
},
|
|
])(
|
|
"$button stores the URL on screen after another page stored a different one",
|
|
async ({ button, input, field }) => {
|
|
const page = await bootPopup(unversionedValidProfile());
|
|
await page.click("btn-settings");
|
|
const url = page.value(input);
|
|
// This write sends this page no storage change event.
|
|
page.storage.write("autistmask", {
|
|
...page.storage.read("autistmask"),
|
|
[field]: "https://other-page.example.invalid",
|
|
});
|
|
// This answer passes both endpoint checks on Ethereum Mainnet. The RPC
|
|
// check reads Ethereum Mainnet's chain id from it. The Blockscout check
|
|
// reads `ok`.
|
|
globalThis.fetch.mockResolvedValue({
|
|
ok: true,
|
|
json: async () => ({ result: NETWORKS.mainnet.chainId }),
|
|
});
|
|
|
|
await page.click(button);
|
|
|
|
expect(page.storage.read("autistmask")[field]).toBe(url);
|
|
expect(page.text("flash-msg")).toBe("Saved.");
|
|
},
|
|
);
|