upskill-event-manager/scripts/test-production.sh
bengizmo 5ab2c58f68 feat: Implement comprehensive security fixes for production deployment
- Fix production debug exposure in Zoho admin interface (WP_DEBUG conditional)
- Implement secure credential storage with AES-256-CBC encryption
- Add file upload size limits (5MB profiles, 2MB logos) with enhanced validation
- Fix privilege escalation via PHP Reflection bypass with public method alternative
- Add comprehensive input validation and security headers
- Update plugin version to 1.0.7 with security hardening

Security improvements:
 Debug information exposure eliminated in production
 API credentials now encrypted in database storage
 File upload security enhanced with size/type validation
 AJAX endpoints secured with proper capability checks
 SQL injection protection verified via parameterized queries
 CSRF protection maintained with nonce verification

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-06 13:31:38 -03:00

148 lines
No EOL
4.6 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Production E2E Testing Script for HVAC Plugin
# Tests all custom functionality on https://upskillhvac.com/
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}🚀 HVAC Plugin Production E2E Test Suite${NC}"
echo -e "${BLUE}=========================================${NC}"
echo ""
echo -e "${YELLOW}Target Environment:${NC} https://upskillhvac.com/"
echo -e "${YELLOW}Test Suite:${NC} Complete HVAC Plugin Functionality"
echo ""
# Check if we're in the right directory
if [ ! -f "package.json" ] || [ ! -d "tests/e2e" ]; then
echo -e "${RED}❌ Error: Must be run from project root directory${NC}"
echo "Expected files: package.json, tests/e2e/"
exit 1
fi
# Check if Playwright is installed
if ! npx playwright --version > /dev/null 2>&1; then
echo -e "${RED}❌ Error: Playwright not found${NC}"
echo "Please install Playwright:"
echo " npm install @playwright/test"
echo " npx playwright install"
exit 1
fi
# Check environment variables
echo -e "${YELLOW}🔍 Checking test environment...${NC}"
if [ -z "$PROD_TRAINER_EMAIL" ] || [ -z "$PROD_TRAINER_PASSWORD" ]; then
echo -e "${YELLOW}⚠️ Warning: Production trainer credentials not set${NC}"
echo " Some authenticated tests will be skipped"
echo " To run full test suite, set:"
echo " export PROD_TRAINER_EMAIL=your-trainer@email.com"
echo " export PROD_TRAINER_PASSWORD=your-password"
echo ""
else
echo -e "${GREEN}✅ Trainer credentials available${NC}"
fi
if [ -z "$PROD_MASTER_TRAINER_EMAIL" ] || [ -z "$PROD_MASTER_TRAINER_PASSWORD" ]; then
echo -e "${YELLOW} Master trainer credentials not set (optional)${NC}"
echo ""
else
echo -e "${GREEN}✅ Master trainer credentials available${NC}"
fi
# Create test results directory
mkdir -p test-results
# Install browsers if needed
echo -e "${YELLOW}🌐 Ensuring browsers are installed...${NC}"
npx playwright install chromium firefox webkit
echo ""
echo -e "${BLUE}📋 Test Categories:${NC}"
echo " 1. Public Site Functionality"
echo " 2. Trainer Authentication & Registration"
echo " 3. Training Leads Management System"
echo " 4. Trainer Dashboard & Navigation"
echo " 5. Event Creation & Management"
echo " 6. Certificate Generation System"
echo " 7. Find a Trainer Public Features"
echo " 8. Master Trainer Functionality"
echo " 9. Documentation System"
echo " 10. Profile Management"
echo " 11. Security & Session Handling"
echo " 12. Mobile & Tablet Responsiveness"
echo ""
# Prompt for confirmation
echo -e "${YELLOW}⚠️ This will run tests against the PRODUCTION site${NC}"
read -p "Continue? (y/N): " confirm
if [[ $confirm != [yY] && $confirm != [yY][eE][sS] ]]; then
echo "Test run cancelled."
exit 0
fi
echo ""
echo -e "${GREEN}🎬 Starting production test suite...${NC}"
echo ""
# Run the tests with production configuration
echo -e "${BLUE}Running comprehensive production tests...${NC}"
npx playwright test \
--config=tests/e2e/playwright.production.config.ts \
--reporter=html,line,json \
--output=test-results/production-output \
--workers=1 \
--timeout=60000 \
--retries=1
TEST_EXIT_CODE=$?
echo ""
echo -e "${BLUE}📊 Test Results Summary${NC}"
echo -e "${BLUE}=======================${NC}"
if [ $TEST_EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}🎉 All tests passed successfully!${NC}"
else
echo -e "${YELLOW}⚠️ Some tests failed or had issues${NC}"
fi
# Display results information
echo ""
echo -e "${YELLOW}📁 Test Artifacts:${NC}"
echo " HTML Report: test-results/production-html-report/"
echo " JSON Results: test-results/production-results.json"
echo " Screenshots: test-results/ (failure-*.png)"
echo " Videos: test-results/ (failure-*.webm)"
echo " Test Summary: test-results/production-test-summary.txt"
echo ""
echo -e "${YELLOW}🔗 Quick Commands:${NC}"
echo " View HTML Report:"
echo " npx playwright show-report test-results/production-html-report/"
echo ""
echo " View failure trace (if any failures):"
echo " npx playwright show-trace test-results/[trace-file].zip"
echo ""
echo " Rerun only failed tests:"
echo " npx playwright test --config=tests/e2e/playwright.production.config.ts --last-failed"
echo ""
# Open HTML report if tests completed
if command -v open > /dev/null 2>&1 && [ -d "test-results/production-html-report" ]; then
echo -e "${YELLOW}Opening HTML report...${NC}"
npx playwright show-report test-results/production-html-report/ &
fi
echo -e "${BLUE}✨ Production testing completed${NC}"
# Return the test exit code
exit $TEST_EXIT_CODE