Problem: - E2E tests for registration (`registration.spec.ts`) were failing. - Successful submissions did not redirect as expected. - Validation errors were not displayed on the form after submitting invalid data. Debugging: - Initial analysis pointed to issues in the PHP form handler (`class-hvac-registration.php`). - Refactored handler to use `admin_post` hook and transients for error persistence. - Success redirect test passed, but validation errors still missing. - Added extensive logging (`error_log`) to trace execution flow and transient handling. - Investigated log output location (stderr via php-fpm.conf, not debug.log). - Logs showed PHP handler wasn't being called on validation failures. - Ruled out JS interference (`hvac-registration.js`). - Diagnosed native HTML5 validation (`required` attribute) as blocking form submission in E2E tests. Solution: - Added `novalidate` attribute to the `<form>` tag in `display_form_html` to bypass browser validation during tests. - Confirmed PHP handler (`process_registration_submission`) is now invoked correctly on both success and failure. - Confirmed `validate_registration` generates errors correctly. - Confirmed transient mechanism correctly passes errors back to the form page. - Confirmed error messages are displayed correctly in the HTML. Outcome: - All E2E tests in `registration.spec.ts` now pass. - Registration form handling follows standard WordPress practices (`admin_post`, transients). Changes: - Modified `class-hvac-registration.php` (admin_post, transients, novalidate). - Modified `registration.spec.ts` (removed test.fail directives). - Updated `activeContext.md`, `progress.md`, `decisionLog.md`, `implementation_plan.md`. |
||
|---|---|---|
| .. | ||
| bin | ||
| nginx-conf | ||
| php.ini | ||
| playwright-report | ||
| ssl | ||
| test-results | ||
| tests | ||
| vendor | ||
| wordpress | ||
| composer.json | ||
| composer.lock | ||
| dev-env.conf | ||
| dev_env_proposal.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| MIGRATION_GUIDE.md | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| php-fpm.conf | ||
| phpunit.xml.dist | ||
| README.md | ||
| testing.md | ||
| tsconfig.json | ||
| wordpress_output.html | ||
| wp-tests-config.php | ||
WordPress Development Environment
Status: Active/Authoritative Last Updated: March 26, 2025 Scope: Development environment setup and configuration
This is a Docker-based development environment for WordPress that replicates the production environment on Cloudways. It includes WordPress with PHP 8.1, MariaDB, and phpMyAdmin.
Prerequisites
- Docker and Docker Compose
- Git
- Node.js and npm (for E2E tests)
- mkcert (for SSL support, installed automatically if needed)
Environment Setup
1. Configuration
The .env file contains:
- Production server details
- Database credentials
- WordPress authentication
- SSL configuration
- Development settings
Important: Ensure the PHP memory_limit is set sufficiently high (e.g., 512M) in php.ini/custom.ini. Restart containers after changing this file (docker-compose down && docker-compose up -d).
2. Development Environment Setup from Backup
The recommended way to set up the development environment is using existing backups:
# Set up environment from the latest backup
./bin/setup-from-backup.sh
# Verify setup
./bin/verify-simple.sh
This process:
- Uses the latest backup from the
backups/directory - Sets up the Docker containers (WordPress, MariaDB, phpMyAdmin, Nginx)
- Imports the database from the backup
- Updates site URLs to point to localhost:8080
- Configures WordPress with the correct settings
3. Creating New Backups
If you need to create a new backup from production:
# Create a new backup from production
./bin/sync-production-fixed.sh
This will create a new backup in the backups/ directory with the current date and time.
4. Plugin Setup
Required plugins are included in the backups:
- The Events Calendar Suite (6.10.2+)
- Event Tickets Suite (5.19.3+)
- Additional required plugins
Automatic Page Creation
Upon activation, the HVAC Community Events plugin automatically creates the following required pages if they don't already exist:
- Community Login (
/community-login/) - Trainer Registration (
/trainer-registration/) - Trainer Dashboard (
/hvac-dashboard/)
Ensure the plugin is deactivated and reactivated if these pages are missing after setup.
Access Points
- WordPress Site:
- HTTP: http://localhost:8080
- HTTPS: https://localhost:8443 (when SSL enabled)
- phpMyAdmin: http://localhost:8081
- Server: db
- Username: from .env (DEV_DB_USER)
- Password: from .env (DEV_DB_PASSWORD)
Development Tools
Environment Management
# Set up environment from backup
./bin/setup-from-backup.sh
# Create a new backup from production
./bin/sync-production-fixed.sh
# Verify environment
./bin/verify-simple.sh
# More detailed verification
./bin/verify-dev-fixed.sh
# Reset development environment
./bin/reset-dev.sh
# Setup SSL (if needed)
./bin/setup-ssl.sh
Testing
Refer to the comprehensive Testing Guide for detailed instructions on setting up the test environment, running different test suites (Unit, Integration, E2E), writing tests, and troubleshooting.
Quick Commands:
# Run all tests (Unit, Integration, E2E)
./bin/run-tests.sh
# Run only Unit tests
./bin/run-tests.sh --unit
# Run only Integration tests
./bin/run-tests.sh --integration
# Run only E2E tests
./bin/run-tests.sh --e2e
WP-CLI
WP-CLI is available inside the wordpress container via a direct volume mount of the phar file. Use docker-compose exec and the --allow-root flag:
docker-compose exec wordpress wp plugin list --allow-root
Database Operations
# Manage database operations
./bin/manage-db-fixed.sh
# Reset development database
./bin/reset-dev.sh
Logs and Cleanup
# View logs
./bin/logs.sh
# Clean up environment
./bin/cleanup.sh
Troubleshooting
Common Issues
-
Environment Issues
# Check container status docker-compose ps # View container logs docker-compose logs # or ./bin/logs.sh -
Database Issues
# Reset database ./bin/reset-dev.sh # Verify database connection ./bin/verify-simple.sh -
Backup Issues
# Check available backups ls -la backups/ # Create a new backup ./bin/sync-production-fixed.sh -
WordPress Access Issues
# Check if WordPress is accessible curl -I http://localhost:8080 # Restart containers docker-compose down && docker-compose up -d
Debug Mode
WordPress debug mode is enabled by default in the development environment. Debug logs can be viewed with:
# View debug logs
docker-compose logs wordpress
# or
./bin/logs.sh wordpress
Migration Guide
If you were using the old setup scripts (setup-dev.sh, sync-production.sh), follow these steps to migrate to the new workflow:
- Create a backup of your current development environment if needed
- Pull the latest changes from the repository
- Use the new setup-from-backup.sh script to set up your environment
- If you need to create a new backup from production, use sync-production-fixed.sh
Security Notes
- Never commit
.envto version control - Use WordPress Application Passwords for API access
- Keep production credentials secure
- Regularly rotate passwords and tokens
- Keep SSL certificates secure
Support
For issues:
- Check debug logs
- Review container logs
- Verify environment configuration
- Contact development team:
- Email: support@tealmaker.com
- Slack: #network-events-support
Last Updated: March 26, 2025