A complete web-based test automation platform for FortiGate and FortiAuthenticator, similar to Jenkins but specialized for mobile app testing.
- Monitor FortiGate and FortiAuthenticator virtual machines
- Track test metrics (pass rate, failure rate, execution time)
- Real-time resource monitoring (CPU, memory, disk usage)
- Docker-based VM isolation
- Start/Stop VMs with one click
- Automatic code analysis using Claude API
- Calculate automation coverage vs manual tests
- Compare with CSV-uploaded manual test cases
- Intelligent failure analysis and recommendations
- Manage APK/IPA mobile test files
- Automatic metadata extraction (version, signature, permissions)
- Drag-and-drop file upload
- Preview and download capabilities
- Auto-discover physical iOS and Android devices
- Support for emulators and cloud devices
- Real-time device status monitoring (battery, storage, availability)
- One-click device selection for test execution
- Health check and heartbeat monitoring
- Docker-containerized test environments
- Parallel test execution
- Real-time log streaming via WebSocket
- Automatic retry on failures
- Detailed test reports
- Docker (20.10+)
- Docker Compose (2.0+)
- 4GB+ RAM
- 10GB+ disk space
./deploy.shThat's it! The script will:
- Check prerequisites
- Create necessary directories
- Generate .env file
- Build and start all services
- Initialize database with sample data
After deployment completes:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Database: localhost:5432 (user: testuser, pass: testpass)
- Redis: localhost:6379
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Web Frontend β
β (React + Ant Design) β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β REST API / WebSocket
ββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β Backend API β
β (FastAPI + Python) β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β β β
βββββββΌββββββ βββββΌβββββ ββββββΌββββββ
βPostgreSQL β β Redis β β Docker β
β Database β β Cache β β Engine β
βββββββββββββ ββββββββββ ββββββββββββ
β
βββββββββββ΄βββββββββββ
β β
βββββββΌβββββββ βββββββΌβββββββ
β Appium β β Physical β
β Servers β β Devices β
ββββββββββββββ ββββββββββββββ
test-platform/
βββ backend/ # FastAPI backend
β βββ app/
β β βββ api/ # API endpoints
β β βββ models/ # Database models
β β βββ services/ # Business logic
β β βββ core/ # Core configuration
β βββ Dockerfile
β βββ requirements.txt
βββ frontend/ # React frontend
β βββ src/
β β βββ pages/ # Page components
β β βββ components/ # Reusable components
β βββ Dockerfile
β βββ package.json
βββ test-files/ # Test file storage
β βββ mobile-apps/ # APK/IPA files
β βββ test-scripts/ # Test scripts
β βββ test-data/ # Test data
βββ docker-compose.yml # Docker Compose config
βββ deploy.sh # One-click deployment
βββ README.md # This file
Edit .env file to configure:
# Database
DATABASE_URL=postgresql://testuser:testpass@db:5432/testplatform
# Redis
REDIS_URL=redis://redis:6379/0
# Security
SECRET_KEY=your-secret-key-here
# AI Services (Optional)
CLAUDE_API_KEY=your-claude-api-key
OPENAI_API_KEY=your-openai-api-key
# Appium
APPIUM_ANDROID_URL=http://appium-android:4723
APPIUM_IOS_URL=http://appium-ios:4724To enable AI-powered features:
- Get your API key from Anthropic
- Add it to
.env:CLAUDE_API_KEY=your-key-here - Restart services:
docker-compose restart backend
- Enable USB debugging on your Android device
- Connect via USB
- Verify connection:
adb devices - In the platform, go to Devices β Refresh Devices
- Install libimobiledevice:
brew install libimobiledevice - Connect iOS device via USB
- Trust the computer on your device
- Verify:
idevice_id -l - In the platform, go to Devices β Refresh Devices
- Go to Tests page
- Click "New Test Job"
- Select VM and devices
- Choose test scripts
- Click "Start Test"
curl -X POST http://localhost:8000/api/tests/execute \
-H "Content-Type: application/json" \
-d '{
"name": "Smoke Test",
"vm_id": "vm-uuid",
"device_ids": ["device-uuid"],
"test_scripts": ["test_login.py"]
}'# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f frontenddocker exec -it testplatform-db psql -U testuser -d testplatformdocker exec -it testplatform-redis redis-clicd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run dev# Backend tests
cd backend
pytest
# Frontend tests
cd frontend
npm testdocker-compose downdocker-compose restartdocker-compose down
docker-compose up -d --builddocker-compose down -vdocker exec testplatform-db pg_dump -U testuser testplatform > backup.sqlcat backup.sql | docker exec -i testplatform-db psql -U testuser -d testplatformOnce the platform is running, visit:
This provides interactive Swagger documentation for all API endpoints.
import requests
response = requests.post('http://localhost:8000/api/vms', json={
'name': 'FortiGate-Test-VM',
'platform': 'FortiGate',
'version': '7.4.2',
'test_priority': 5
})
print(response.json())response = requests.get('http://localhost:8000/api/devices', params={
'status': 'available'
})
devices = response.json()['devices']files = {'file': open('FortiClient.apk', 'rb')}
response = requests.post('http://localhost:8000/api/files/upload', files=files)- Check Docker is running:
docker ps - Check logs:
docker-compose logs backend - Verify database is healthy:
docker-compose ps db
- Ensure PostgreSQL container is running
- Check connection string in
.env - Wait for database to be healthy:
docker-compose logs db
- For Android: Run
adb devicesto verify connection - For iOS: Run
idevice_id -lto verify connection - Check Appium logs:
docker-compose logs appium-android
- Change ports in
docker-compose.yml - Or stop conflicting services
- Change all default passwords in
.env - Use HTTPS (add nginx with SSL)
- Enable authentication (implement JWT)
- Restrict Docker socket access
- Use secrets management (HashiCorp Vault, AWS Secrets Manager)
- Enable firewall rules
- Regular security updates
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - See LICENSE file for details
- Documentation: Check
/docsfolder - Jenkins Cloud runner API: See
docs/JENKINS_CLOUD_API.mdfor the Jenkins Cloud endpoints used to trigger and monitor multi-platform test runs. - API Docs: http://localhost:8000/docs
- Issues: Create a GitHub issue
- Email: support@example.com
Built with:
- FastAPI
- React
- Ant Design
- Docker
- PostgreSQL
- Redis
- Appium
- Kubernetes deployment support
- Advanced test scheduling
- Integration with CI/CD pipelines
- Real-time test result dashboards
- Machine learning for test failure prediction
- Multi-tenant support
- Advanced reporting and analytics
- Cloud device farm integration (AWS, BrowserStack)
Happy Testing! π