82 lines
2.4 KiB
Bash
Executable file
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[@]}"
|