#!/usr/bin/env bash # Browser checks for src/web/index.html and src/site/index.html. # Needs: npm install (playwright-core) and a Chromium binary in $CH. set -u cd "$(dirname "$0")" && mkdir -p out : "${CH:?set CH to a Chromium executable, e.g. ~/.cache/ms-playwright/chromium-*/chrome-linux64/chrome}" export CH node match.mjs # page counts = hand-off data file node src.mjs | grep FAILS # each data source shows only its own data node audit.mjs 2>&1 | grep -v '^INFO' # 8 viewports: clickability, overlap, overflow node fit.mjs | grep -v ' 0px$' || true # route panel fits the hero node card_sel.mjs # every route x map x size: no card overflow node trunc.mjs | tail -1 # no truncated text in the route card node view_btns.mjs | tail -2 # zoom / reset buttons node offline.mjs | tail -3 # site/index.html with the network blocked node newsec.mjs | tail -2 # networks and code sections: layout, no flat-fit section node overlap.mjs | tail -1 # a click where routes overlap selects the top-drawn route node hero.mjs | tail -1 # hero renders at desktop and phone width node mode.mjs | cut -c1-60 # cable / straight toggle changes the counts node sync.mjs | tail -1 # The Sync Test (satellites/): 8 viewports, readouts, controls [ "${LIVE:-0}" = 1 ] && node live.mjs # LIVE=1: the public site node femap.mjs | tail -1 # The Best Flat Map (femap/): 8 viewports, live solve, 3D release