platform-codebase/features/platform-admin/frontend-admin/e2e/run

82 lines
2.4 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Parallel Playwright Test Runner (Platform Admin)
#
# Usage:
# ./run # Default: 4 workers, fully parallel
# ./run --workers=8 # 8 parallel workers
# ./run --sequential # Sequential mode (1 worker, no parallelism)
# ./run analytics # Run specific test file
# ./run --headed # Visual debugging mode
#
# Environment Variables:
# WORKERS Number of parallel workers (default: 4)
# FULLY_PARALLEL Enable full parallelism (default: true)
# PLAYWRIGHT_OPTS Additional Playwright options
#
# Examples:
# WORKERS=8 ./run # 8 workers
# WORKERS=1 FULLY_PARALLEL=false ./run # Sequential (original behavior)
# ./run analytics --headed # Debug analytics tests
set -euo pipefail
# Default configuration
WORKERS="${WORKERS:-4}"
FULLY_PARALLEL="${FULLY_PARALLEL:-true}"
SEQUENTIAL=false
# Parse arguments
ARGS=()
for arg in "$@"; do
case "$arg" in
--sequential)
SEQUENTIAL=true
WORKERS=1
FULLY_PARALLEL=false
;;
--workers=*)
WORKERS="${arg#*=}"
;;
*)
ARGS+=("$arg")
;;
esac
done
# Build playwright command
CMD=(npx playwright test)
# Add worker count
CMD+=(--workers="$WORKERS")
# Add full parallelism flag if enabled
if [ "$FULLY_PARALLEL" = "true" ] && [ "$SEQUENTIAL" = "false" ]; then
CMD+=(--fully-parallel)
fi
# Add config file
CMD+=(--config=playwright.docker.config.ts)
# Add any additional Playwright options from environment
if [ -n "${PLAYWRIGHT_OPTS:-}" ]; then
read -ra OPTS <<< "$PLAYWRIGHT_OPTS"
CMD+=("${OPTS[@]}")
fi
# Add remaining arguments
CMD+=("${ARGS[@]}")
# Print configuration
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Playwright Test Runner (Platform Admin)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Workers: $WORKERS"
echo "Fully Parallel: $FULLY_PARALLEL"
echo "Mode: $([ "$SEQUENTIAL" = "true" ] && echo "Sequential" || echo "Parallel")"
echo "Command: ${CMD[*]}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo
# Execute
exec "${CMD[@]}"