Skip to main content
Glama
contract-testing.md4.24 kB
# Contract Testing with Live WordPress This guide explains how to run contract tests against a live WordPress instance using the automated testing setup. ## 🚀 Quick Start (Automated) The easiest way to test against a live WordPress instance: ```bash npm run test:contracts:live ``` This command will: 1. 🐳 Start isolated WordPress + MySQL containers (port 8081) 2. ⚙️ Auto-configure WordPress with test data 3. 🧪 Run contract tests against the live instance 4. 🧹 Clean up automatically when done **No conflicts with existing services** - uses isolated Docker containers with different ports. ## 📋 What the Automated Setup Includes ### WordPress Configuration - **URL**: `http://localhost:8081` - **Admin User**: `testuser` / `test-password-123` - **App Password**: Auto-generated for API access - **Test Content**: Pre-created posts and media for testing ### Docker Services - **WordPress**: Latest WordPress with auto-setup - **MySQL**: 8.0 with optimized configuration - **WP-CLI**: For automated WordPress configuration ### Network Isolation - Uses separate Docker network: `wordpress-test-network` - Port 8081 (different from main development environment) - Isolated volumes: `wordpress_test_data`, `db_test_data` ## 🔧 Manual Setup (Alternative) If you prefer manual setup or need custom configuration: ### 1. Start Services ```bash docker-compose -f docker-compose.test.yml up -d ``` ### 2. Check Status ```bash docker-compose -f docker-compose.test.yml ps docker-compose -f docker-compose.test.yml logs -f wordpress-test ``` ### 3. Access WordPress - WordPress: <http://localhost:8081> - Admin Panel: <http://localhost:8081/wp-admin> ### 4. Run Tests ```bash # Set environment variables export WORDPRESS_TEST_URL="http://localhost:8081" export WORDPRESS_USERNAME="testuser" export WORDPRESS_APP_PASSWORD="your-app-password" export PACT_LIVE_TESTING="true" # Run contract tests npm run test:contracts ``` ### 5. Cleanup ```bash docker-compose -f docker-compose.test.yml down -v ``` ## 🧪 Test Modes ### Mock Testing (Default) ```bash npm run test:contracts ``` - Uses Pact mock provider - No external dependencies - Fast execution - Good for CI/CD ### Live Testing ```bash npm run test:contracts:live ``` - Tests against real WordPress - Validates actual API behavior - Comprehensive integration testing - Auto-setup and cleanup ## 📊 Test Coverage The contract tests verify: ### ✅ Posts API - Create posts with proper structure - Retrieve posts with pagination - Response format validation ### ✅ Media API - File upload handling - Multipart form data - Media library integration ### ✅ Users API - User information retrieval - Authentication validation - Permission handling ### ✅ Authentication - App password authentication - Authorization headers - Error handling ## 🛠️ Troubleshooting ### Port Already in Use ```bash # Check what's using port 8081 lsof -i :8081 # Kill process if needed kill -9 <PID> ``` ### Docker Issues ```bash # Clean up Docker resources docker system prune -f docker volume prune -f # Restart Docker daemon sudo service docker restart # Linux # Or restart Docker Desktop # macOS/Windows ``` ### WordPress Not Ready ```bash # Check WordPress logs docker-compose -f docker-compose.test.yml logs wordpress-test # Check database logs docker-compose -f docker-compose.test.yml logs db-test # Manual health check curl http://localhost:8081/wp-json/wp/v2/ ``` ### Test Failures ```bash # Run with debug output DEBUG=true npm run test:contracts:live # Check WordPress configuration docker-compose -f docker-compose.test.yml exec wordpress-test cat /var/www/html/test-config.json ``` ## 🔒 Security Notes - Test environment uses isolated containers - Default credentials are for testing only - Auto-cleanup removes all test data - No persistent storage outside containers ## 📈 CI/CD Integration To use in CI/CD pipelines: ```yaml # GitHub Actions example - name: Install Docker Compose run: sudo apt-get install docker-compose - name: Run Contract Tests run: npm run test:contracts:live timeout-minutes: 10 ``` The automated setup is designed to work in CI environments with proper Docker support.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/docdyhr/mcp-wordpress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server