commit c8b7b726db1b18f77c61b03ed495084ca1dc32b5
parent 54a83b0075a6ac0a26352db98b745ee4c6797dfa
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Sat, 19 Sep 2026 15:49:50 -0400
e2e: the box the "no" answer is written in, at 1366x768
The bench is a one-screen layout, and a one-screen layout is a claim about a
SIZE. Nothing asserted one, so `correction` fell below its column at the
laptop size and the suite stayed green.
Asserted at the screen a walk is actually done on, and in the taller state
too: pressing `x` adds the line saying the note IS the answer, which is
exactly the moment the box has to be there to type into.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/umtool/e2e/clip-bench.spec.ts b/umtool/e2e/clip-bench.spec.ts
@@ -1088,3 +1088,39 @@ test("the CLI pass reports every cut it can find, and writes none on a dry run",
expect(out).toContain("dry run");
expect(readClip("c04").cutStart).toBeUndefined();
});
+
+// ---------------------------------------------------------------------------
+// ONE SCREEN, on the screen a walk is actually done on.
+//
+// The bench is a one-screen layout (see the comment on its root), and the
+// thing that has to be on that screen is the ANSWER: the two verdict buttons
+// and the box the "no" answer is written in. At 1366x768 the claim -- the
+// quote, the note, the sibling list -- used to push `correction`, the last
+// field, past the bottom of its column, so the only way to say what was wrong
+// with a clip was to notice there was more panel and scroll it.
+// ---------------------------------------------------------------------------
+test("the last attribution field is on screen at a laptop's 1366×768", async ({ page }) => {
+ await page.setViewportSize({ width: 1366, height: 768 });
+ // c01 is the tall case: it has a quote, a note, and two siblings to list.
+ await page.goto(bench("c01"));
+ await expect(page.locator("[data-bench]")).toBeVisible();
+
+ const reachable = () =>
+ page.evaluate(() => {
+ const claim = document.querySelector("[data-clip-context]")!;
+ const column = claim.parentElement!.getBoundingClientRect();
+ const box = document
+ .querySelector("[data-attrib-field=correction]")!
+ .getBoundingClientRect();
+ // Positive = how far past the bottom of the column the box sits.
+ return Math.round(box.bottom - column.bottom);
+ });
+
+ expect(await reachable()).toBeLessThanOrEqual(0);
+
+ // And in the taller state: "no" adds the line telling you the note IS the
+ // answer, which is exactly when the box has to be there to type into.
+ await page.locator("[data-verdict-no]").click();
+ await expect(page.locator("[data-attrib-field=correction]")).toBeFocused();
+ expect(await reachable()).toBeLessThanOrEqual(0);
+});