diff --git a/README.md b/README.md index 5f5bd87..a4fa830 100644 --- a/README.md +++ b/README.md @@ -500,9 +500,12 @@ papered over: forced by clicking Reveal and the settings gear in one page task, which a person cannot do; the case a person can hit, the first decrypt after the popup opens while libsodium is still loading, is not driven. -- Approval windows open at 1280x720 whatever size the extension asks for, so - whether an approval screen fits its window is checked in the Firefox suite - only. +- Approval windows open at 1280x720 whatever size the extension asks for. The + site-connection prompt and the transaction approval are checked for sideways + scrolling at 396x600 by sizing the page itself for that measurement only, and + the rest of each test runs at 1280x720. That leaves out the window's frame and + the page widening its window, so whether an approval screen fits its window is + checked in the Firefox suite only. Any test that drives a failure path on purpose declares the `console.error` it is about to provoke, via `errors.expect()`. That is not a mute: the declaration diff --git a/src/popup/index.html b/src/popup/index.html index ba3197f..b41cf9e 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -90,7 +90,7 @@
+ 396x600. -->

Enter your 12 or 24 word recovery phrase below, or @@ -212,7 +212,7 @@ />

diff --git a/tests/dustThreshold.test.js b/tests/dustThreshold.test.js index 100b045..0a6a0e6 100644 --- a/tests/dustThreshold.test.js +++ b/tests/dustThreshold.test.js @@ -101,7 +101,7 @@ describe("the flash line the message is shown in", () => { // // The line cuts a message too long for it with an ellipsis (see // showFlash() in src/popup/views/helpers.js). The assertions that - // measure that, in a real browser at the documented 360x600 popup, are + // measure that, in a real browser at the documented 396x600 popup, are // "a rejected dust threshold shifts no layout (#233)" and "an over-long // flash message keeps to one line (#252)" in tests/e2e/run.js, run by // make test-e2e. They are not in make check because REPO_POLICIES.md diff --git a/tests/e2e/run.js b/tests/e2e/run.js index 2fdd9ad..3ec090b 100644 --- a/tests/e2e/run.js +++ b/tests/e2e/run.js @@ -60,6 +60,14 @@ const TEST_TIMEOUT_MS = 120000; // trailing drain in main(). const TRAILING_WATCH_MS = 1500; +// The popup's size, as README gives it: `body` in src/popup/styles/main.css +// is 396px wide, and src/background/index.js opens an approval window at +// the same 396x600. Pages in this context otherwise get Playwright's +// 1280x720 default, where the page never scrolls sideways and a button +// below the popup's fold is still on screen, so a layout measured there +// passes whatever the page does. +const POPUP_VIEWPORT = { width: 396, height: 600 }; + const tests = []; function test(name, fn) { @@ -1885,12 +1893,6 @@ test("a network switch in Settings shows and removes the testnet banner at once // ------------------------------------------------ dust threshold (#233) -// The popup size README documents the UI as designed for. Pages in this -// context otherwise get Playwright's 1280x720 default, at which the flash -// line has room for any plausible message and never wraps — measuring -// there would pass for every string and prove nothing. -const POPUP_VIEWPORT = { width: 360, height: 600 }; - // Everything below the flash line that must not move when it fills, plus // the height of the line itself. Runs in the page. // @@ -2139,7 +2141,7 @@ test("a password error moves nothing on any screen (#297)", async (env) => { // ------------------------------------------ add wallet Import button (#493) -// At 360x600 the add wallet screen's Import button already starts near the +// At 396x600 the add wallet screen's Import button already starts near the // bottom of the popup, so its password error line sits beside the button // rather than above it. Measures the button and the line empty and again // filled with the longest error addWallet.js puts there. Runs in the page. @@ -3431,10 +3433,14 @@ test("six failed receipt lookups in a row end on the unreachable-network message // timeout ("'; + 'style="position:fixed;left:0;top:0;width:' + + POPUP_VIEWPORT.width + + "px;height:" + + POPUP_VIEWPORT.height + + 'px;z-index:99999">'; // What a correctly escaped and capped render of it reads as: the first // MAX_SYMBOL_LENGTH-1 characters and an ellipsis. Spelled out rather than @@ -5026,8 +5032,20 @@ function addressRowReport(page) { }); } +// Measured at the popup's 396x600 (POPUP_VIEWPORT). Every page in this +// context, approval windows included, is otherwise 1280x720 whatever size +// the extension asks for, and a page that wide never scrolls sideways. The +// page is then put back to the size it had, so the size a later step runs at +// does not depend on whether this one ran. async function assertAddressesFit(page, where) { - const report = await addressRowReport(page); + const sizeBefore = page.viewportSize(); + await page.setViewportSize(POPUP_VIEWPORT); + let report; + try { + report = await addressRowReport(page); + } finally { + await page.setViewportSize(sizeBefore); + } assert( report.rows.length > 0, where + ": no address rows were rendered, so nothing was measured",