- 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>
135 lines
No EOL
3.1 KiB
Bash
Executable file
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 |