{"id":30182832,"url":"https://github.com/rupamdas-ts/mobile-app-testing-hub","last_synced_at":"2026-06-29T07:31:28.940Z","repository":{"id":308222856,"uuid":"1031285522","full_name":"RupamDas-ts/mobile-app-testing-hub","owner":"RupamDas-ts","description":"🚀 A Docker-based system for iOS app testing using Appium, Xcode, and iOS simulators. It includes AppService 📦 for app management, SimulatorService 🎮 for booting simulators, and ProxyService 🔄 for routing WebDriver commands to Appium servers for seamless test automation.","archived":false,"fork":false,"pushed_at":"2025-08-04T20:18:53.000Z","size":2852,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-12T10:26:44.417Z","etag":null,"topics":["appium","docker","ios","mobile-app-testing","simulator","test-automation","testing-tools","webdriver","xcode"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RupamDas-ts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-03T12:23:23.000Z","updated_at":"2025-08-04T20:18:56.000Z","dependencies_parsed_at":"2025-08-04T21:58:50.399Z","dependency_job_id":null,"html_url":"https://github.com/RupamDas-ts/mobile-app-testing-hub","commit_stats":null,"previous_names":["rupamdas-ts/mobile-app-testing-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RupamDas-ts/mobile-app-testing-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupamDas-ts%2Fmobile-app-testing-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupamDas-ts%2Fmobile-app-testing-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupamDas-ts%2Fmobile-app-testing-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupamDas-ts%2Fmobile-app-testing-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RupamDas-ts","download_url":"https://codeload.github.com/RupamDas-ts/mobile-app-testing-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupamDas-ts%2Fmobile-app-testing-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34918101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appium","docker","ios","mobile-app-testing","simulator","test-automation","testing-tools","webdriver","xcode"],"created_at":"2025-08-12T10:17:25.778Z","updated_at":"2026-06-29T07:31:28.934Z","avatar_url":"https://github.com/RupamDas-ts.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mobile Testing Hub\n\nA comprehensive mobile app testing system that combines Docker containers with local macOS services for iOS simulator integration.\n\n## Architecture\n\nThis system uses a hybrid approach:\n- **Docker containers**: `app-service`, `proxy-service`, `redis`\n- **Local macOS**: `simulator-service` (runs directly on host for Xcode integration)\n\n### Services\n\n1. **App Service** (Docker - Port 3000)\n   - Manages app uploads and metadata\n   - Stores app information in Redis\n   - RESTful API for app management\n\n2. **Simulator Service** (Local macOS - Port 3001)\n   - Manages iOS simulators via Xcode\n   - Installs and launches apps on simulators\n   - Starts and manages Appium server locally\n   - **Must run locally on macOS** for Xcode simulator access\n\n3. **Appium Server** (Local macOS - Port 4723)\n   - Runs directly on macOS host (started by simulator service)\n   - Handles WebDriver commands for iOS automation\n   - Communicates with iOS simulators via XCUITest\n   - **Must run locally on macOS** for iOS simulator access\n\n4. **Proxy Service** (Docker - Port 3002)\n   - Orchestrates communication between services\n   - Manages test sessions\n   - Forwards WebDriver commands to local Appium server\n   - Provides unified API interface\n\n5. **Redis** (Docker - Port 6379)\n   - Stores app metadata and session information\n   - Provides caching and data persistence\n\n## Prerequisites\n\n### For Docker Services\n- Docker and Docker Compose\n- Node.js 18+ (for local development)\n\n### For Local Simulator Service\n- macOS (required for Xcode simulators)\n- Xcode with iOS Simulator\n- Node.js 18+\n- Appium (will be installed automatically)\n\n## Quick Start\n\n### Option 1: Using the Management Script (Recommended)\n\n```bash\n# Make the script executable (first time only)\nchmod +x mobile-testing-hub.sh\n\n# Setup all requirements (Docker, Xcode, Appium, etc.)\n./mobile-testing-hub.sh --setup\n\n# Start all services in Docker containers (except simulator-service)\n./mobile-testing-hub.sh --start docker\n\n# Check health of all services\n./mobile-testing-hub.sh --health\n\n# Stop all services\n./mobile-testing-hub.sh --stop\n```\n\n### Option 2: Manual Setup\n\n#### 1. Start Docker Services\n\n```bash\n# Start app-service, proxy-service, and redis\ndocker compose up -d\n```\n\n#### 2. Start Local Simulator Service\n\n```bash\n# Start the simulator service using the management script\n./mobile-testing-hub.sh --start --service simulator-service\n```\n\n#### 3. Verify Services\n\n```bash\n# Check Docker services\ndocker compose ps\n\n# Check local simulator service\ncurl http://localhost:3001/api/health\n```\n\n## API Endpoints\n\n### App Service (Port 3000)\n- `POST /api/upload` - Upload mobile app\n- `GET /api/apps/:id` - Get app details\n- `GET /api/health` - Health check\n\n### Simulator Service (Port 3001)\n- `POST /api/simulate` - Start simulator and install app\n- `POST /api/cleanup` - Cleanup simulators and processes\n- `GET /api/health` - Health check\n\n### Proxy Service (Port 3002)\n- `POST /api/test` - Start test session\n- `GET /api/status` - Get test status\n- `GET /api/health` - Health check\n\n## Management Script\n\nThe `mobile-testing-hub.sh` script provides comprehensive management of all services:\n\n### Available Commands\n\n```bash\n# Setup and installation\n./mobile-testing-hub.sh --setup                    # Install all requirements\n./mobile-testing-hub.sh --start                    # Start all services locally\n./mobile-testing-hub.sh --start docker             # Start services in Docker\n./mobile-testing-hub.sh --start --service \u003cNAME\u003e   # Start specific service\n\n# Health monitoring\n./mobile-testing-hub.sh --health                   # Check all services health\n./mobile-testing-hub.sh --health --service \u003cNAME\u003e  # Check specific service\n\n# Service management\n./mobile-testing-hub.sh --stop                     # Stop all services\n./mobile-testing-hub.sh --stop --service \u003cNAME\u003e    # Stop specific service\n\n# Help\n./mobile-testing-hub.sh --help                     # Show all available options\n```\n\n### Features\n\n- **Automatic Setup**: Installs Docker, Xcode, Node.js, Appium, and Homebrew\n- **Port Management**: Checks and frees required ports automatically\n- **Service Isolation**: Start/stop individual services or all at once\n- **Health Monitoring**: Real-time health checks for all services\n- **Docker Integration**: Seamless Docker and local service management\n- **Error Handling**: Comprehensive error checking and user feedback\n\n## Development\n\n### Local Development Setup\n\n1. **Clone the repository**\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd mobile-testing-hub\n   ```\n\n2. **Install dependencies for local services**\n   ```bash\n   cd simulator-service\n   npm install\n   ```\n\n3. **Start services**\n   ```bash\n   # Terminal 1: Start Docker services\n   docker compose up -d\n   \n   # Terminal 2: Start local simulator service\n   ./start-simulator-service.sh\n   ```\n\n### Testing the Setup\n\n1. **Upload an app**\n   ```bash\n   curl -X POST http://localhost:3000/api/upload \\\n     -F \"appFile=@path/to/your/app.ipa\"\n   ```\n\n2. **Start a simulator session**\n   ```bash\n   curl -X POST http://localhost:3001/api/simulate \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\n       \"appId\": \"your-app-id\",\n       \"deviceName\": \"iPhone 16 Pro\",\n       \"platformVersion\": \"18.5\"\n     }'\n   ```\n\n## Configuration\n\n### Environment Variables\n\n#### App Service\n- `REDIS_HOST` - Redis host (default: redis)\n- `REDIS_PORT` - Redis port (default: 6379)\n- `NODE_ENV` - Environment (default: production)\n\n#### Simulator Service\n- `APP_SERVICE_URL` - App service URL (default: http://localhost:3000)\n- `PORT` - Service port (default: 3001)\n- `NODE_ENV` - Environment (default: development)\n\n#### Proxy Service\n- `SIMULATOR_SERVICE_URL` - Simulator service URL (default: http://host.docker.internal:3001)\n- `NODE_ENV` - Environment (default: production)\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Simulator service can't connect to app service**\n   - Ensure app service is running: `docker compose ps`\n   - Check app service logs: `docker compose logs app-service`\n\n2. **Xcode simulator issues**\n   - Verify Xcode is installed: `xcrun simctl list devices`\n   - Check Xcode command line tools: `xcode-select --install`\n\n3. **Appium issues**\n   - Appium is installed automatically by the simulator service\n   - Check Appium logs in simulator service output\n\n### Logs\n\n```bash\n# Docker services\ndocker compose logs app-service\ndocker compose logs proxy-service\ndocker compose logs redis\n\n# Local simulator service\n# Logs are displayed in the terminal where you started it\n```\n\n## Architecture Benefits\n\n- **Performance**: Simulator service runs natively on macOS for optimal Xcode integration\n- **Scalability**: Docker services can be easily scaled and deployed\n- **Development**: Local simulator service allows for easy debugging and development\n- **Production**: Docker services provide consistent deployment environments\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test thoroughly\n5. Submit a pull request\n\n## License\n\n[Add your license information here] ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupamdas-ts%2Fmobile-app-testing-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frupamdas-ts%2Fmobile-app-testing-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupamdas-ts%2Fmobile-app-testing-hub/lists"}