From 64441847f09e4ee8c842ce7490c816b7cfc79fa1 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Sun, 3 May 2026 20:07:55 +0200 Subject: [PATCH] test(ms-ai-architect): playground v3 static tests [skip-docs] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 14 (Wave 5). Adds tests/test-playground-v3.sh — 170 PASS-line static validation suite for the v3 HTML, bash 3.2-compatible. Coverage: - File existence + min line count (>= 1500) - HTML skeleton markers (DOCTYPE/html/head/body) + data-theme default - 7 vendored CSS link tags in canonical order - Theme bootstrap (Step 13): localStorage key + .theme-toggle + toggle-theme action - file://-safety: no external script/stylesheet src - 4 surfaces (onboarding/home/catalog/project) - STATE_KEY = 'ms-ai-architect-state-v1' - 8 exposed window.__-globals (store, CATALOG, PARSERS, RENDERERS, ...) - All 24 command IDs from commands/*.md referenced - 14 parser functions (canonical archetype routing) - 17 renderer functions (canonical command routing) - Design-system class usage (Tier 1+2+3); .cmd-pipeline reserved (warn) - 5 onboarding groups + 5 catalog expansion groups - 11 helpers (renderError, renderEmptyState, parseTable, ...) - SCHEMA_VERSION + MIGRATIONS pipeline + IndexedDB primary - 23 ACTIONS handlers (incl. toggle-theme) - Export/import primitives (Blob, URL.createObjectURL, FileReader) Pipefail-safe (grep | wc patterns wrapped in `{ ... || true; }`). --- .../tests/test-playground-v3.sh | 406 ++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100755 plugins/ms-ai-architect/tests/test-playground-v3.sh 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