Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

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:
Mumtool/e2e/clip-bench.spec.ts | 36++++++++++++++++++++++++++++++++++++
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); +});