4.1 KiB
4.1 KiB
AutoPilot — Distributed Web Test Automation Platform
AutoPilot is a full-stack, enterprise-grade distributed web browser automation platform. It consists of three components deployed together as a monorepo.
autopilot/
├── master/ # Cloud Coordinator — Spring Boot REST API + Scheduler + DB
├── worker/ # Execution Engine — Selenium WebDriver agent (polls master)
├── ui/ # Dashboard — React + Vite frontend (served via Nginx)
├── docker-compose.yml # Production: full stack with PostgreSQL
├── docker-compose.local.yml # Local dev: DB only (run services manually)
└── .env.example # Template for environment variables
🚀 Production Deployment (AWS / Any Linux Server)
Prerequisites
- Docker & Docker Compose installed
- At least 2 CPU cores and 2GB RAM
1. Clone the repository
git clone https://repo.qruize.com/VithobaaSrinivasakumar/Autopilot.git
cd Autopilot
2. Configure environment variables
cp .env.example .env
nano .env # Fill in DB_PASS, JWT_SECRET, AWS keys, etc.
3. Deploy the full stack
docker-compose up -d --build
This starts:
- PostgreSQL (database, internal only)
- AutoPilot Master on port
9090 - AutoPilot UI on port
80(Nginx)
4. Verify deployment
docker-compose ps
curl http://localhost:9090/api/health
5. Updating to a new version
git pull origin main
docker-compose up -d --build
To connect to aws Server Install mobax or ssh terminal application create session with this ip address 13.232.42.59 give private key named mesibo (ask dhakshan).i cant give key here in this repo.
go to cd /home/ubuntu/Autopilot give docker ps -a (To check if the containers are running well) then go to http://13.232.42.59 that its.
🏗️ Local Development (No Docker for Services)
1. Start only the database
docker-compose -f docker-compose.local.yml up -d
2. Start the Master (Terminal 1)
cd master
./mvnw spring-boot:run
# Runs on http://localhost:9090
3. Start the UI (Terminal 2)
cd ui
npm install
npm run dev
# Runs on http://localhost:5173
4. Start the Worker (Terminal 3)
cd worker
./mvnw spring-boot:run
# Polls http://localhost:9090 for jobs
🔗 CI/CD Integration
AutoPilot can be triggered directly from your DevOps pipeline using an API key.
Trigger a test suite
curl -X POST \
-H "Authorization: Bearer ap_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"suiteName": "Smoke Tests", "browser": "chrome"}' \
https://your-domain.com/api/v1/suites/trigger-by-name
Poll for results
curl -H "Authorization: Bearer ap_live_your_api_key" \
https://your-domain.com/api/v1/schedulers/{schedulerId}/execution-status
# exitCode: 0 = all passed, 1 = failures, 2 = still running
For full GitHub Actions, GitLab CI, and Jenkins snippets, see the CI/CD Integration page inside the dashboard.
🌐 Environment Variables Reference
| Variable | Description | Required |
|---|---|---|
DB_URL |
JDBC connection string to PostgreSQL | ✅ |
DB_USER |
Database username | ✅ |
DB_PASS |
Database password | ✅ |
JWT_SECRET |
Minimum 256-bit secret for signing tokens | ✅ |
AWS_REGION |
AWS region for S3 screenshot storage | Optional |
AWS_ACCESS_KEY_ID |
AWS access key | Optional |
AWS_SECRET_ACCESS_KEY |
AWS secret key | Optional |
S3_BUCKET_NAME |
S3 bucket for storing screenshots | Optional |
LOCALAGENT_CLOUD_URL |
URL the Worker uses to reach the Master | Worker only |
📖 API Reference
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/v1/suites/{id}/trigger |
Trigger suite by ID |
POST |
/api/v1/suites/trigger-by-name |
Trigger suite by name |
GET |
/api/v1/schedulers/{id}/execution-status |
Poll execution result |
GET |
/api/v1/executions/{id}/status |
Get execution detail |