#!/bin/bash # test-playground-v3.sh — Static checks for the Playground v3 HTML # # Bash 3.2-kompatibel. Verifiserer struktur, vendored CSS, surfaces, command-katalog, # parser/renderer-routing, eksponerte globals, og design-system CSS-klassebruk. # JS-kjøring testes separat i test-parsers-v3.mjs (eller .sh-shim) — denne fila # leser kun rå tekst med grep/awk/wc. set -euo pipefail PLUGIN_ROOT="$(cd "$(dirname "$0")/.." && pwd)" HTML_FILE="$PLUGIN_ROOT/playground/ms-ai-architect-playground.html" # Inkluder felles helpers (init_suite, pass, fail, warn, print_summary, # assert_min_lines, assert_matches_pattern). Disse aktiverer set -euo pipefail — # wrapper hver assert i logikk som returnerer 0 selv ved miss for å unngå tidlig # exit i denne lange suiten. # shellcheck disable=SC1091 source "$PLUGIN_ROOT/tests/lib/e2e-helpers.sh" init_suite "Playground v3 — Static structure" # ------------------------------------------------------- # 1. Fil eksisterer + minimum størrelse # ------------------------------------------------------- if [ ! -f "$HTML_FILE" ]; then fail "HTML-fila finnes ikke: $HTML_FILE" print_summary exit 1 fi pass "HTML-fila eksisterer: playground/ms-ai-architect-playground.html" assert_min_lines "$HTML_FILE" 1500 "v3 HTML er >= 1500 linjer" # ------------------------------------------------------- # 2. Grunnleggende HTML-struktur # ------------------------------------------------------- for marker in '' '' '
' '' '' ''; do if grep -qF "$marker" "$HTML_FILE"; then pass "HTML-marker til stede: $marker" else fail "HTML-marker mangler: $marker" fi done # data-theme-attribute (default-verdi i markup) if grep -q 'data-theme="dark"' "$HTML_FILE" || grep -q "data-theme='dark'" "$HTML_FILE"; then pass "data-theme=\"dark\" satt på som default" else fail "data-theme=\"dark\" mangler på " fi # ------------------------------------------------------- # 3. Vendored CSS-koblinger (7 stk i bestemt rekkefølge) # ------------------------------------------------------- EXPECTED_CSS="fonts.css tokens.css base.css components.css components-tier2.css components-tier3.css components-tier3-supplement.css" prev_line=0 order_ok=1 for css in $EXPECTED_CSS; do line=$(grep -n "vendor/playground-design-system/$css" "$HTML_FILE" | head -n 1 | cut -d: -f1 || echo "") if [ -z "$line" ]; then fail "CSS-link mangler: vendor/playground-design-system/$css" order_ok=0 else pass "CSS-link til stede: $css (linje $line)" if [ "$prev_line" -gt 0 ] && [ "$line" -lt "$prev_line" ]; then order_ok=0 fi prev_line=$line fi done if [ "$order_ok" -eq 1 ]; then pass "Vendored CSS-link-tags i forventet rekkefølge" else fail "Vendored CSS-link-tags er ikke i forventet rekkefølge" fi # ------------------------------------------------------- # 4. Theme bootstrap (Step 13) # ------------------------------------------------------- assert_matches_pattern "$HTML_FILE" "ms-ai-architect-theme" \ "localStorage-nøkkel ms-ai-architect-theme referert (Step 13)" assert_matches_pattern "$HTML_FILE" "data-action=\"toggle-theme\"" \ "data-action=\"toggle-theme\" til stede" assert_matches_pattern "$HTML_FILE" "class=\"theme-toggle\"" \ ".theme-toggle-knapp wired til topbar" # ------------------------------------------------------- # 5. Ingen eksterne JS-script-references (file:// must work) # ------------------------------------------------------- if grep -qE '