Files
improvise/harness/build.sh
T
Edward Langley 09ada9c1b5 test(harness): a grouped, multi-level fixture, and the first browser run of anr9
web/demo.improv has no groups and one category per visible axis, deliberately
(gotcha 46), so the multi-level header, the group span, the collapse indicator
and the inline group row -- exactly the code improvise-anr9 added -- had never
been rendered anywhere a test could see (improvise-plcx).

harness/fixtures/grouped.improv is served beside the shipped demo by
harness/build.sh; web/demo.improv is untouched. Two categories on each visible
axis, three row groups with one collapsed, two column groups.

A missing seed is NOT an error -- web/worker.js answers a 404 with an empty
model -- so every assertion is about labels the fixture really carries, never
that a grid exists.

Five injections, five distinct failures, patched in harness/serve so no
rebuild stands between the fault and the run: slash-joining the level tuples;
colSpan = 1 on the group headers; a stray cell on the inline group row;
indicator(false) hard-coded; and the collapse removed from the document.

One thing the ticket did not predict: the row frame's FIRST group header is
never drawn, so the spec asserts two group rows where the document has three,
with improvise-0o6x named on the line.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
2026-09-20 16:34:24 -07:00

36 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
# Build everything the browser harness serves, into harness/serve/.
#
# harness/serve/ the assembled site, exactly as `web/assemble.sh`
# produces it for GitHub Pages
# harness/serve/opfs/ this harness's own page, worker and wasm bundle
#
# One server root, so Playwright runs one `python3 -m http.server`. The site
# half is the *deployed* arrangement rather than `web/` itself, because a
# harness that runs against a different tree from the one that ships is
# testing something nobody deploys (improvise-vvl3).
set -eu
root=$(cd "$(dirname "$0")/.." && pwd)
serve="$root/harness/serve"
"$root/web/build.sh" >/dev/null
"$root/web/assemble.sh" "$serve" harness >/dev/null
# The harness's own documents, beside the shipped one. `web/demo.improv` is
# the front page and stays as it is (gotcha 46); a grouped, multi-level model
# is the only way to reach the header-level, group-span and collapse paths
# `improvise-anr9` added (improvise-plcx). A seed that 404s is NOT an error --
# worker.js answers it with an empty model -- so every spec over these asserts
# real labels rather than that a grid exists.
cp -f "$root"/harness/fixtures/*.improv "$serve/app/"
wasm-pack build "$root/harness/opfs-contract" \
--target web --out-dir "$root/harness/www/opfs/pkg"
mkdir -p "$serve/opfs"
cp -f "$root/harness/www/opfs/index.html" "$root/harness/www/opfs/worker.js" "$serve/opfs/"
cp -rf "$root/harness/www/opfs/pkg" "$serve/opfs/pkg"
rm -f "$serve/opfs/pkg/.gitignore" "$serve/opfs/pkg/package.json"
echo "harness/serve ready"