upskill-event-manager/wordpress-dev/bin/pre-deploy-validation.sh
bengizmo 261ab99e88 docs: Update testing documentation and add deployment resilience scripts
- Enhanced documentation with selector stability best practices
- Added recommendations for resilient testing and deployment
- Created verify-selectors.sh script to validate critical selectors pre-deployment
- Added pre-deploy-validation.sh for comprehensive environment validation
- Improved troubleshooting section with specific recommendations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-21 20:37:32 -03:00

135 lines
No EOL
3.1 KiB
Bash
Executable file

#!/bin/bash
# pre-deploy-validation.sh - Script to validate environment before deployment
# Usage: ./bin/pre-deploy-validation.sh [--ci]
set -e
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Parse arguments
CI_MODE=false
for arg in "$@"; do
case $arg in
--ci)
CI_MODE=true
shift
;;
esac
done
echo -e "${GREEN}=== Pre-Deployment Validation Tool ===${NC}"
echo "Verifying environment and test readiness before deployment..."
# Check if we're in the right directory
if [ ! -d "tests/e2e" ]; then
echo -e "${RED}Error: Please run this script from the wordpress-dev directory${NC}"
exit 1
fi
# Create logs directory
mkdir -p logs/pre-deploy
# Log function
log() {
echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" >> logs/pre-deploy/validation-$(date +"%Y%m%d").log
echo "$1"
}
# Function to run a validation check
run_check() {
local check_name=$1
local check_command=$2
log "Running check: ${check_name}"
if eval "${check_command}"; then
log "${GREEN}✓ Check passed: ${check_name}${NC}"
return 0
else
log "${RED}✗ Check failed: ${check_name}${NC}"
return 1
fi
}
# Validation checks
validate_npm_dependencies() {
log "Validating npm dependencies..."
npm list @playwright/test > /dev/null
}
validate_test_config() {
log "Validating Playwright configuration..."
[ -f "playwright.config.ts" ]
}
validate_plugin_activation() {
log "Checking if plugin activation script exists..."
[ -f "bin/verify-plugin-status.sh" ] || [ -f "bin/activate-plugin.sh" ]
}
validate_selectors() {
log "Validating critical selectors..."
bash bin/verify-selectors.sh
}
validate_test_users() {
log "Checking test user creation script..."
[ -f "bin/create-test-users.sh" ]
}
validate_certificate_system() {
log "Validating certificate test scripts..."
[ -f "tests/e2e/certificate-generation-checked-in.test.ts" ]
}
# Main validation logic
FAILURES=0
# Run all validation checks
if ! run_check "NPM Dependencies" validate_npm_dependencies; then
FAILURES=$((FAILURES + 1))
fi
if ! run_check "Test Configuration" validate_test_config; then
FAILURES=$((FAILURES + 1))
fi
if ! run_check "Plugin Activation" validate_plugin_activation; then
FAILURES=$((FAILURES + 1))
fi
if ! run_check "Test Users" validate_test_users; then
FAILURES=$((FAILURES + 1))
fi
if ! run_check "Certificate System" validate_certificate_system; then
FAILURES=$((FAILURES + 1))
fi
# Run selector validation last (most comprehensive)
if ! run_check "Critical Selectors" validate_selectors; then
FAILURES=$((FAILURES + 1))
fi
# Summary
log "\n${GREEN}=== Pre-Deployment Validation Summary ===${NC}"
if [ $FAILURES -eq 0 ]; then
log "${GREEN}✓ All validation checks passed successfully${NC}"
log "Environment is ready for deployment"
exit 0
else
log "${RED}${FAILURES} validation check(s) failed${NC}"
log "Please fix the issues before proceeding with deployment"
if [ "$CI_MODE" = true ]; then
log "CI build failed due to pre-deployment validation failures"
exit 1
fi
exit 1
fi