#!/usr/bin/env bash # Test runner for the theme-studio tool. Drives the whole pyramid in one command: # - regenerate theme-studio.html from generate.py # - Python templating tests (export-strip + placeholder substitution) # - Node unit tests for colormath.js (+ inline-integrity) # - syntax-check the spliced page ', h, re.S).group(1)) PY # 5. Browser hash gates. CHROME="" for c in google-chrome-stable google-chrome chromium chromium-browser; do if command -v "$c" >/dev/null 2>&1; then CHROME="$c"; break; fi done HASHES="selftest cursortest readouttest deltatest oklchtest planetest locktest" if [ -z "$CHROME" ]; then for t in $HASHES; do skip_msg "#$t (no Chromium-family browser found)"; done else PROF="$(mktemp -d)" trap 'rm -rf "$PROF"' EXIT for t in $HASHES; do upper="$(echo "$t" | tr '[:lower:]' '[:upper:]')" res="$("$CHROME" --headless --no-sandbox --disable-gpu --user-data-dir="$PROF" \ --virtual-time-budget=8000 --dump-dom "file://$HERE/theme-studio.html#$t" 2>/dev/null \ | grep -o "${upper}[^<]*" | head -1)" case "$res" in *PASS*) pass_msg "#$t" ;; *FAIL*) fail_msg "#$t -> $res" ;; *) fail_msg "#$t -> no verdict (browser did not run the test)" ;; esac done fi echo if [ "$fail" -eq 0 ]; then echo "all stages green"; else echo "FAILURES above"; fi exit "$fail"