summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/web_harness.mjs33
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);