upskill-event-manager/tests/environments/docker-compose.yml
Ben 7c9ca65cf2
Some checks are pending
HVAC Plugin CI/CD Pipeline / Security Analysis (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Code Quality & Standards (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Unit Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Integration Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Deploy to Staging (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Deploy to Production (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Notification (push) Blocked by required conditions
Security Monitoring & Compliance / Dependency Vulnerability Scan (push) Waiting to run
Security Monitoring & Compliance / Secrets & Credential Scan (push) Waiting to run
Security Monitoring & Compliance / WordPress Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Static Code Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Security Compliance Validation (push) Waiting to run
Security Monitoring & Compliance / Security Summary Report (push) Blocked by required conditions
Security Monitoring & Compliance / Security Team Notification (push) Blocked by required conditions
feat: add comprehensive test framework and test files
- Add 90+ test files including E2E, unit, and integration tests
- Implement Page Object Model (POM) architecture
- Add Docker testing environment with comprehensive services
- Include modernized test framework with error recovery
- Add specialized test suites for master trainer and trainer workflows
- Update .gitignore to properly track test infrastructure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 23:23:26 -03:00

194 lines
No EOL
5.4 KiB
YAML

# Docker Compose for HVAC Testing Framework
# Provides hermetic WordPress testing environment with database isolation
#
# Usage:
# docker-compose up -d # Start services
# docker-compose down # Stop services
# docker-compose down -v # Stop services and remove volumes (clean slate)
version: '3.8'
services:
# WordPress with HVAC plugin
wordpress:
image: wordpress:latest
container_name: hvac-test-wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: hvac_test
WORDPRESS_DB_USER: hvac_user
WORDPRESS_DB_PASSWORD: hvac_password
WORDPRESS_TABLE_PREFIX: wp_
WORDPRESS_DEBUG: 'true'
WORDPRESS_CONFIG_EXTRA: |
/* Test-specific configuration */
define('WP_ENVIRONMENT_TYPE', 'development');
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', true);
define('CONCATENATE_SCRIPTS', false);
/* Disable file editing in admin */
define('DISALLOW_FILE_EDIT', true);
/* Memory and time limits for testing */
ini_set('memory_limit', '512M');
ini_set('max_execution_time', 300);
/* Test environment markers */
define('HVAC_TEST_ENVIRONMENT', true);
define('HVAC_DOCKER_ENVIRONMENT', true);
volumes:
- wordpress_data:/var/www/html
- ../../:/var/www/html/wp-content/plugins/hvac-community-events:ro
- ./uploads:/var/www/html/wp-content/uploads
- ./test-logs:/var/www/html/wp-content/debug.log
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_started
networks:
- hvac-test-network
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
start_period: 40s
# MySQL database with test isolation
mysql:
image: mysql:8.0
container_name: hvac-test-mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: hvac_root_password
MYSQL_DATABASE: hvac_test
MYSQL_USER: hvac_user
MYSQL_PASSWORD: hvac_password
MYSQL_ROOT_HOST: '%'
volumes:
- mysql_data:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d:ro
- ./mysql-conf:/etc/mysql/conf.d:ro
command: >
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--innodb-buffer-pool-size=256M
--innodb-log-file-size=64M
--max-connections=200
--sql-mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
networks:
- hvac-test-network
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "hvac_user", "-phvac_password"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
# Redis for caching (optional but recommended for performance testing)
redis:
image: redis:7-alpine
container_name: hvac-test-redis
ports:
- "6379:6379"
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- redis_data:/data
networks:
- hvac-test-network
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# WP-CLI container for database operations
wpcli:
image: wordpress:cli
container_name: hvac-test-wpcli
volumes:
- wordpress_data:/var/www/html
- ../../:/var/www/html/wp-content/plugins/hvac-community-events
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: hvac_test
WORDPRESS_DB_USER: hvac_user
WORDPRESS_DB_PASSWORD: hvac_password
depends_on:
mysql:
condition: service_healthy
networks:
- hvac-test-network
profiles:
- cli
command: tail -f /dev/null
# MailHog for email testing
mailhog:
image: mailhog/mailhog:latest
container_name: hvac-test-mailhog
ports:
- "1025:1025" # SMTP server
- "8025:8025" # Web interface
networks:
- hvac-test-network
restart: unless-stopped
# PHPMyAdmin for database inspection (optional)
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: hvac-test-phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_USER: hvac_user
PMA_PASSWORD: hvac_password
MYSQL_ROOT_PASSWORD: hvac_root_password
depends_on:
mysql:
condition: service_healthy
networks:
- hvac-test-network
profiles:
- admin
volumes:
wordpress_data:
driver: local
mysql_data:
driver: local
redis_data:
driver: local
networks:
hvac-test-network:
driver: bridge
name: hvac-test-network
# Additional configuration files that can be mounted:
#
# ./mysql-init/01-test-databases.sql:
# CREATE DATABASE IF NOT EXISTS hvac_test_backup;
# CREATE DATABASE IF NOT EXISTS hvac_test_template;
# GRANT ALL PRIVILEGES ON hvac_test_backup.* TO 'hvac_user'@'%';
# GRANT ALL PRIVILEGES ON hvac_test_template.* TO 'hvac_user'@'%';
#
# ./mysql-conf/test-optimizations.cnf:
# [mysqld]
# innodb_flush_log_at_trx_commit = 2
# sync_binlog = 0
# innodb_flush_method = O_DIRECT
# query_cache_type = 1
# query_cache_size = 64M