diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 23:16:24 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:15 -0300 |
| commit | 4c30f231a6dc57adde8ae7390cd656ddc6210c8a (patch) | |
| tree | 5be836b17ecf3ee549e47c6dac6758733dc9cbaf | |
| parent | d8d770454e77fbeeb0dd9c5e965a7eda6a5558ba (diff) | |
| download | pardes-4c30f231a6dc57adde8ae7390cd656ddc6210c8a.tar.gz pardes-4c30f231a6dc57adde8ae7390cd656ddc6210c8a.zip | |
The web harness Looks through the touch fixture its documented dump holds
test/web_harness.mjs still expected source-list.dump.zon (a git ls-files
listing of the live tree), which posxwrksryvw deleted for capturing project
paths; the documented invocation embeds touch.dump.zon, so the scroll check
could never match. The harness now scrolls the fixture to its first row,
right-click Looks /virtual/pane/1/body and checks the reflected body opens
with Tree-sitter styles. A stale test, not a product bug.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
| -rw-r--r-- | test/web_harness.mjs | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/test/web_harness.mjs b/test/web_harness.mjs index 402e41f4..7fd58b86 100644 --- a/test/web_harness.mjs +++ b/test/web_harness.mjs @@ -90,29 +90,34 @@ async function main() { assert.equal(renderer.cells[0], firstCell, "stable frames should reuse DOM nodes"); assert.equal(second.cells.length, 80 * 24); - // A replay follows the terminal cursor at the bottom. Deliberately - // over-scroll (the core clamps at row zero) so adding more source files does - // not silently move the hard-coded build.zig click onto some later path. + // The embedded dump is test/web-snapshots/touch.dump.zon, a fixed source + // fixture (no live project paths). Over-scroll first (the core clamps at row + // zero) so the Look below always lands on the fixture's own first rows. for (let tick = 0; tick < 128; tick += 1) wasm.pardes_mouse(3, 0, 5, 3, 0); const listingTop = draw(); - assert.match( - listingTop.cells.map((cell) => cell.text).join(""), - /git ls-files --cached --others --exclude-standard.*build\.zig/, - "working-tree source listing did not scroll to its first row", + const topLines = Array.from({ length: listingTop.rows }, (_, row) => + listingTop.cells.slice(row * listingTop.cols, (row + 1) * listingTop.cols).map((cell) => cell.text).join("")); + assert.ok( + topLines.some((text) => /^\s*1 pub fn choose/.test(text)), + "fixture source did not scroll to its first row", ); - wasm.pardes_mouse(2, 0, 5, 3, 0); - wasm.pardes_mouse(2, 1, 5, 3, 0); + const link = "/virtual/pane/1/body"; + const linkRow = topLines.findIndex((text) => text.includes(link)); + assert.ok(linkRow >= 0, "fixture has no Look target"); + const linkCol = topLines[linkRow].indexOf(link) + 5; + wasm.pardes_mouse(2, 0, linkCol, linkRow, 0); + wasm.pardes_mouse(2, 1, linkCol, linkRow, 0); const looked = draw(); - assert.match( - looked.cells.map((cell) => cell.text).join(""), - /build\.zig\s+Save Tty Del/, - "right-click LOOK did not open the embedded source", + const lookedText = looked.cells.map((cell) => cell.text).join(""); + assert.ok( + lookedText.includes(`${link} `) && lookedText.split("pub fn choose").length - 1 >= 2, + "right-click LOOK did not open the reflected source body", ); const sourceRows = Array.from({ length: looked.rows }, (_, row) => looked.cells.slice(row * looked.cols, (row + 1) * looked.cols)); const codeRows = sourceRows.filter((row) => row.map((cell) => cell.text).join("").match(/^\s*\d+\s/)); const codeColors = new Set(codeRows.flatMap((row) => row.slice(5).map((cell) => `${cell.fg}:${cell.attrs & 1}`))); - assert.ok(codeColors.size >= 3, "Tree-sitter did not apply distinct syntax styles to build.zig"); + assert.ok(codeColors.size >= 3, "Tree-sitter did not apply distinct syntax styles to the fixture"); assert.deepEqual(asked, [], "a plain replay asked the page for host IO"); wasm.pardes_resize(41, 13); |
