| | #!/bin/bash
|
| |
|
| |
|
| |
|
| |
|
| | set -e
|
| |
|
| | echo "π Starting E2E Test Suite..."
|
| |
|
| | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
| | PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
| | FRONTEND_DIR="$PROJECT_ROOT/frontend"
|
| |
|
| |
|
| | DB_TYPE="${AXONHUB_E2E_DB_TYPE:-$DB_TYPE}"
|
| |
|
| |
|
| | if [[ -z "$DB_TYPE" ]]; then
|
| | DB_TYPE="sqlite"
|
| | fi
|
| |
|
| |
|
| | KEEP_DB="${AXONHUB_E2E_KEEP_DB:-false}"
|
| | ARGS=()
|
| | while [[ $# -gt 0 ]]; do
|
| | case $1 in
|
| | -d|--db-type)
|
| | if [[ -z "$AXONHUB_E2E_DB_TYPE" ]]; then
|
| |
|
| | DB_TYPE="$2"
|
| | fi
|
| | shift 2
|
| | ;;
|
| | --keep-db)
|
| | if [[ -z "$AXONHUB_E2E_KEEP_DB" ]]; then
|
| |
|
| | KEEP_DB=true
|
| | fi
|
| | shift
|
| | ;;
|
| | --help)
|
| | echo "Usage: $0 [OPTIONS] [PLAYWRIGHT_ARGS...]"
|
| | echo ""
|
| | echo "Options:"
|
| | echo " -d, --db-type TYPE Database type: sqlite, mysql, postgres (default: sqlite)"
|
| | echo " Can also be set via AXONHUB_E2E_DB_TYPE environment variable"
|
| | echo " --keep-db Keep database after tests complete (don't cleanup)"
|
| | echo " Can also be set via AXONHUB_E2E_KEEP_DB environment variable"
|
| | echo " --help Show this help message"
|
| | echo ""
|
| | echo "Environment Variables:"
|
| | echo " AXONHUB_E2E_DB_TYPE Database type (takes precedence over --db-type)"
|
| | echo " AXONHUB_E2E_DB_DSN Database DSN for MySQL/PostgreSQL"
|
| | echo " AXONHUB_E2E_USE_EXISTING_DB Use existing database (don't create new)"
|
| | echo " AXONHUB_E2E_KEEP_DB Keep database after tests (takes precedence over --keep-db)"
|
| | echo ""
|
| | echo "Examples:"
|
| | echo " $0 # Run tests with sqlite"
|
| | echo " $0 -d mysql # Run tests with MySQL"
|
| | echo " $0 --keep-db # Run tests and keep database"
|
| | echo " AXONHUB_E2E_DB_TYPE=mysql $0 # Set via environment variable"
|
| | echo " AXONHUB_E2E_KEEP_DB=true $0 # Keep database via environment variable"
|
| | exit 0
|
| | ;;
|
| | *)
|
| | ARGS+=("$1")
|
| | shift
|
| | ;;
|
| | esac
|
| | done
|
| |
|
| |
|
| | case "$DB_TYPE" in
|
| | sqlite|mysql|postgres)
|
| | ;;
|
| | *)
|
| | echo "β Invalid database type: $DB_TYPE"
|
| | echo "Supported types: sqlite, mysql, postgres"
|
| | exit 1
|
| | ;;
|
| | esac
|
| |
|
| |
|
| | cleanup() {
|
| | echo ""
|
| | echo "π§Ή Cleaning up..."
|
| | cd "$PROJECT_ROOT"
|
| |
|
| | if [ "$KEEP_DB" = true ]; then
|
| | echo "πΎ Keeping database (--keep-db flag set)"
|
| |
|
| | ./scripts/e2e/e2e-backend.sh stop > /dev/null 2>&1 || true
|
| | else
|
| | echo "ποΈ Removing database and stopping server..."
|
| | ./scripts/e2e/e2e-backend.sh stop > /dev/null 2>&1 || true
|
| | fi
|
| | }
|
| |
|
| |
|
| | trap cleanup EXIT
|
| |
|
| |
|
| | echo "π¦ Starting E2E backend server..."
|
| | echo "ποΈ Database type: $DB_TYPE"
|
| | cd "$PROJECT_ROOT"
|
| |
|
| |
|
| | rm -f ./scripts/e2e/.e2e-backend-db-type
|
| |
|
| |
|
| | export AXONHUB_E2E_DB_TYPE="$DB_TYPE"
|
| | export AXONHUB_E2E_DB_DSN="${AXONHUB_E2E_DB_DSN:-}"
|
| | export AXONHUB_E2E_DB_DIALECT="${AXONHUB_E2E_DB_DIALECT:-}"
|
| | export AXONHUB_E2E_USE_EXISTING_DB="${AXONHUB_E2E_USE_EXISTING_DB:-false}"
|
| | export AXONHUB_E2E_KEEP_DB="$KEEP_DB"
|
| |
|
| |
|
| | ./scripts/e2e/e2e-backend.sh start
|
| |
|
| | if [ $? -ne 0 ]; then
|
| | echo "β Failed to start E2E backend server"
|
| | exit 1
|
| | fi
|
| |
|
| | echo ""
|
| | echo "β
Backend server ready"
|
| | echo ""
|
| |
|
| |
|
| | cd "$FRONTEND_DIR"
|
| | echo "π§ͺ Running Playwright tests..."
|
| | echo ""
|
| |
|
| |
|
| | pnpm playwright test "${ARGS[@]}"
|
| |
|
| | TEST_EXIT_CODE=$?
|
| |
|
| | echo ""
|
| | if [ $TEST_EXIT_CODE -eq 0 ]; then
|
| | echo "β
All tests passed!"
|
| | if [ "$KEEP_DB" = true ]; then
|
| | echo "πΎ Database preserved (--keep-db flag)"
|
| | echo "π Database location:"
|
| | case "$DB_TYPE" in
|
| | sqlite)
|
| | echo " SQLite: ./scripts/e2e/axonhub-e2e.db"
|
| | ;;
|
| | mysql)
|
| | echo " MySQL container: axonhub-e2e-mysql (port 13306)"
|
| | ;;
|
| | postgres)
|
| | echo " PostgreSQL container: axonhub-e2e-postgres (port 15432)"
|
| | ;;
|
| | esac
|
| | fi
|
| | else
|
| | echo "β Some tests failed (exit code: $TEST_EXIT_CODE)"
|
| | if [ "$KEEP_DB" = true ]; then
|
| | echo "πΎ Database preserved for debugging (--keep-db flag)"
|
| | echo "π Database location:"
|
| | case "$DB_TYPE" in
|
| | sqlite)
|
| | echo " SQLite: ./scripts/e2e/axonhub-e2e.db"
|
| | ;;
|
| | mysql)
|
| | echo " MySQL container: axonhub-e2e-mysql (port 13306)"
|
| | ;;
|
| | postgres)
|
| | echo " PostgreSQL container: axonhub-e2e-postgres (port 15432)"
|
| | ;;
|
| | esac
|
| | else
|
| | echo ""
|
| | echo "π‘ Tips:"
|
| | echo " - View report: pnpm test:e2e:report"
|
| | echo " - Check backend logs: cat ../scripts/e2e/e2e-backend.log"
|
| | echo " - Inspect database: sqlite3 ../scripts/e2e/axonhub-e2e.db"
|
| | fi
|
| | fi
|
| |
|
| | exit $TEST_EXIT_CODE
|
| |
|