diff --git a/plugins/ms-ai-architect/tests/test-playground-v3.sh b/plugins/ms-ai-architect/tests/test-playground-v3.sh new file mode 100755 index 0000000..f9668f4 --- /dev/null +++ b/plugins/ms-ai-architect/tests/test-playground-v3.sh @@ -0,0 +1,406 @@ +#!/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-v3.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-v3.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 ']+src=["'\'']https?://' "$HTML_FILE"; then + fail "Ekstern