aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-studio/run-tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/theme-studio/run-tests.sh')
-rwxr-xr-xscripts/theme-studio/run-tests.sh12
1 files changed, 8 insertions, 4 deletions
diff --git a/scripts/theme-studio/run-tests.sh b/scripts/theme-studio/run-tests.sh
index 0db7faa0b..6666fb0b9 100755
--- a/scripts/theme-studio/run-tests.sh
+++ b/scripts/theme-studio/run-tests.sh
@@ -44,8 +44,10 @@ else fail_msg "Node unit tests"; grep -E 'not ok|AssertionError|Error' /tmp/ts-n
# 4. Syntax-check the inlined page script.
python3 - <<'PY' && node --check /tmp/ts-script.js >/dev/null 2>&1 && pass_msg "spliced page <script> parses" || fail_msg "spliced page <script> syntax"
import re
-h = open('theme-studio.html').read()
-open('/tmp/ts-script.js', 'w').write(re.search(r'<script>(.*)</script>', h, re.S).group(1))
+with open('theme-studio.html') as src:
+ h = src.read()
+with open('/tmp/ts-script.js', 'w') as out:
+ out.write(re.search(r'<script>(.*)</script>', h, re.S).group(1))
PY
# 5. Browser hash gates.
@@ -53,7 +55,9 @@ 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 sorttest mocktest contrasttest safetest healtest familytest counttest baseedittest roundtriptest beveltest"
+# Derive the gate list from the gate blocks themselves so it can't drift: a gate
+# added to browser-gates.js runs automatically, and one removed stops being run.
+HASHES="$(grep -oE "location\.hash==='#[a-z]+test'" browser-gates.js | sed -E "s/.*#([a-z]+test)'/\1/" | sort -u | tr '\n' ' ')"
if [ "$NO_BROWSER" = 1 ]; then
skip_msg "browser hash gates (--no-browser)"
elif [ -z "$CHROME" ]; then
@@ -68,7 +72,7 @@ else
upper="$(echo "$t" | tr '[:lower:]' '[:upper:]')"
res="$(timeout --kill-after=5 30 "$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)"
+ | grep -oE "${upper} (PASS|FAIL)[^<]*" | head -1)"
case "$res" in
*PASS*) pass_msg "#$t" ;;
*FAIL*) fail_msg "#$t -> $res" ;;