#!/bin/bash # run-e2e.sh — Run E2E regression tests for agent outputs # Usage: bash tests/run-e2e.sh [--security] [--cost] [--summary] [--ros] [--ai-act] [--playground] [--kb-update] [--all] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" RED='\033[0;31m' GREEN='\033[0;32m' CYAN='\033[0;36m' NC='\033[0m' # Parse arguments RUN_SECURITY=false RUN_COST=false RUN_SUMMARY=false RUN_ROS=false RUN_AI_ACT=false RUN_PLAYGROUND=false RUN_KB_UPDATE=false if [ $# -eq 0 ] || [ "${1:-}" = "--all" ]; then RUN_SECURITY=true RUN_COST=true RUN_SUMMARY=true RUN_ROS=true RUN_AI_ACT=true RUN_PLAYGROUND=true RUN_KB_UPDATE=true else while [ $# -gt 0 ]; do case "$1" in --security) RUN_SECURITY=true ;; --cost) RUN_COST=true ;; --summary) RUN_SUMMARY=true ;; --ros) RUN_ROS=true ;; --ai-act) RUN_AI_ACT=true ;; --playground) RUN_PLAYGROUND=true ;; --kb-update) RUN_KB_UPDATE=true ;; *) echo "Usage: bash tests/run-e2e.sh [--security] [--cost] [--summary] [--ros] [--ai-act] [--playground] [--kb-update] [--all]" exit 1 ;; esac shift done fi echo -e "${CYAN}╔══════════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ MS AI Architect — E2E Regression Tests ║${NC}" echo -e "${CYAN}╚══════════════════════════════════════════════╝${NC}" echo "" FAILURES=0 if $RUN_SECURITY; then bash "$SCRIPT_DIR/test-security-output.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_COST; then bash "$SCRIPT_DIR/test-cost-output.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_SUMMARY; then bash "$SCRIPT_DIR/test-summary-output.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_ROS; then bash "$SCRIPT_DIR/test-ros-output.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_AI_ACT; then bash "$SCRIPT_DIR/test-ai-act-output.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_PLAYGROUND; then bash "$SCRIPT_DIR/test-playground-v3.sh" || FAILURES=$((FAILURES + 1)) bash "$SCRIPT_DIR/test-playground-parsers.sh" || FAILURES=$((FAILURES + 1)) fi if $RUN_KB_UPDATE; then echo -e "${CYAN}─── KB Update utilities ───${NC}" PLUGIN_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" if (cd "$PLUGIN_ROOT" && node --test tests/kb-update/*.test.mjs); then echo -e "${GREEN}KB Update: PASS${NC}" else echo -e "${RED}KB Update: FAIL${NC}" FAILURES=$((FAILURES + 1)) fi fi echo -e "${CYAN}══════════════════════════════════════════════${NC}" if [ "$FAILURES" -eq 0 ]; then echo -e "${GREEN} All E2E suites passed${NC}" else echo -e "${RED} $FAILURES suite(s) had failures${NC}" fi echo -e "${CYAN}══════════════════════════════════════════════${NC}" exit $FAILURES