upskill-event-manager/wordpress-dev/README.md
bengizmo 37f7b426b6 feat: Implement auto page creation & fix login E2E tests
Implements automatic creation of required plugin pages (Community Login,
Trainer Registration, Trainer Dashboard) upon plugin activation. This
addresses E2E test failures caused by missing pages in the test
environment.

- Adds activation hook in `hvac-community-events.php` to call
  `hvac_ce_create_required_pages`.
- The callback function checks for existing pages by slug and creates
  them using `wp_insert_post` if missing. Includes debug logging.

Also fixes issues identified during E2E test debugging:
- Corrects fatal error in `includes/community/class-login-handler.php`
  by replacing undefined constant `HVAC_COMMUNITY_EVENTS_PATH` with
  `HVAC_CE_PLUGIN_DIR`.
- Updates `tests/e2e/tests/login.spec.ts` to use the correct selector
  `#wp-submit` for the login form submit button instead of
  `button[type="submit"]`.

Documentation updates:
- Adds `docs/automatic-page-creation-plan.md`.
- Updates `README.md` regarding automatic page creation.
- Updates Memory Bank files (`decisionLog.md`, `progress.md`,
  `activeContext.md`).

Note: Activation hook logging did not appear during WP-CLI activation,
requiring further investigation if page creation issues persist. E2E
test confirmation pending.
2025-03-28 17:18:21 -03:00

236 lines
No EOL
5.5 KiB
Markdown

# 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:
```bash
# Set up environment from the latest backup
./bin/setup-from-backup.sh
# Verify setup
./bin/verify-simple.sh
```
This process:
1. Uses the latest backup from the `backups/` directory
2. Sets up the Docker containers (WordPress, MariaDB, phpMyAdmin, Nginx)
3. Imports the database from the backup
4. Updates site URLs to point to localhost:8080
5. Configures WordPress with the correct settings
### 3. Creating New Backups
If you need to create a new backup from production:
```bash
# 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
```bash
# 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](./testing.md)** for detailed instructions on setting up the test environment, running different test suites (Unit, Integration, E2E), writing tests, and troubleshooting.
**Quick Commands:**
```bash
# 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:
```bash
docker-compose exec wordpress wp plugin list --allow-root
```
### Database Operations
```bash
# Manage database operations
./bin/manage-db-fixed.sh
# Reset development database
./bin/reset-dev.sh
```
### Logs and Cleanup
```bash
# View logs
./bin/logs.sh
# Clean up environment
./bin/cleanup.sh
```
## Troubleshooting
### Common Issues
1. **Environment Issues**
```bash
# Check container status
docker-compose ps
# View container logs
docker-compose logs
# or
./bin/logs.sh
```
2. **Database Issues**
```bash
# Reset database
./bin/reset-dev.sh
# Verify database connection
./bin/verify-simple.sh
```
3. **Backup Issues**
```bash
# Check available backups
ls -la backups/
# Create a new backup
./bin/sync-production-fixed.sh
```
4. **WordPress Access Issues**
```bash
# 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:
```bash
# 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:
1. Create a backup of your current development environment if needed
2. Pull the latest changes from the repository
3. Use the new setup-from-backup.sh script to set up your environment
4. If you need to create a new backup from production, use sync-production-fixed.sh
## Security Notes
1. Never commit `.env` to version control
2. Use WordPress Application Passwords for API access
3. Keep production credentials secure
4. Regularly rotate passwords and tokens
5. Keep SSL certificates secure
## Support
For issues:
1. Check debug logs
2. Review container logs
3. Verify environment configuration
4. Contact development team:
- Email: support@tealmaker.com
- Slack: #network-events-support
*Last Updated: March 26, 2025*