{"id":31782048,"url":"https://github.com/morbargig/chrome-97-simulator","last_synced_at":"2026-05-08T14:01:52.502Z","repository":{"id":318646741,"uuid":"1072152903","full_name":"morbargig/chrome-97-simulator","owner":"morbargig","description":"🐛 Chrome 97 simulator for debugging legacy browser compatibility issues in enterprise applications. Docker-based testing environment with visual access and automated session management.","archived":false,"fork":false,"pushed_at":"2025-10-08T10:58:19.000Z","size":9155,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-08T12:33:03.868Z","etag":null,"topics":["browser-automation","bug-reproduction","chrome-97","compatibility-testing","debugging","docker","enterprise","legacy-browser","qa-testing","selenium"],"latest_commit_sha":null,"homepage":"","language":"Python","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/morbargig.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-08T10:31:04.000Z","updated_at":"2025-10-08T10:58:22.000Z","dependencies_parsed_at":"2025-10-08T12:33:08.708Z","dependency_job_id":null,"html_url":"https://github.com/morbargig/chrome-97-simulator","commit_stats":null,"previous_names":["morbargig/chrome-97-simulator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/morbargig/chrome-97-simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morbargig%2Fchrome-97-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morbargig%2Fchrome-97-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morbargig%2Fchrome-97-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morbargig%2Fchrome-97-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/morbargig","download_url":"https://codeload.github.com/morbargig/chrome-97-simulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morbargig%2Fchrome-97-simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003387,"owners_count":26083579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"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":["browser-automation","bug-reproduction","chrome-97","compatibility-testing","debugging","docker","enterprise","legacy-browser","qa-testing","selenium"],"created_at":"2025-10-10T09:14:11.938Z","updated_at":"2025-10-10T09:14:13.493Z","avatar_url":"https://github.com/morbargig.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌐 Chrome 97 Simulator\n\nA comprehensive Docker-based Chrome 97 testing environment that allows you to test your web applications in an older Chrome version. Perfect for compatibility testing, legacy browser support validation, and ensuring your applications work across different Chrome versions.\n\n## ✨ Features\n\n- **🐳 Dockerized Chrome 97**: Isolated Chrome 97 environment using Selenium\n- **🖥️ Visual Access**: noVNC desktop for real-time browser interaction\n- **🔗 Localhost Access**: Seamless connection to your local development servers\n- **⚡ Multiple Connection Modes**: Quick connect, timed sessions, and infinite runtime\n- **🛠️ Developer Tools**: Built-in connectivity testing and debugging utilities\n- **📱 Multi-Port Support**: Connect to any local port (3000, 4200, 5173, 8080, etc.)\n- **🔄 Auto-Recovery**: Bulletproof session management with automatic reconnection\n\n## 🚀 Quick Start\n\n### 1. Prerequisites\n\n- Docker and Docker Compose installed\n- Your web application running locally\n- Node.js (for JavaScript tests) or Python 3.7+ (for Python tests)\n\n### 2. Start Chrome 97 Container\n\n```bash\n# Clone the repository\ngit clone https://github.com/morbargig/chrome-97-simulator.git\ncd chrome-97-simulator\n\n# Start the Chrome 97 container\ndocker-compose up -d\n\n# Verify it's running\ndocker-compose ps\n```\n\n### 3. Connect to Your App\n\n#### Option A: Interactive Connection (Recommended)\n```bash\n# Connect to your frontend (will prompt for port)\npython3 connect_to_frontend.py\n\n# Or specify port directly\npython3 connect_to_frontend.py 3000\n```\n\n#### Option B: Using npm scripts\n```bash\n# Install dependencies\nnpm install\n\n# Connect to different ports\nnpm run connect:3000    # React, Next.js\nnpm run connect:4200    # Angular\nnpm run connect:5173    # Vite\nnpm run connect:8080    # Vue.js\n```\n\n#### Option C: Infinite Session (Never Stops)\n```bash\n# Run forever with auto-recovery\npython3 run_forever.py 3000\n```\n\n### 4. Access Your Browser\n\n- **🖥️ Visual Desktop**: http://localhost:7900 (no password required)\n- **🔧 WebDriver API**: http://localhost:4444\n- **📊 Container Status**: `docker-compose ps`\n\n## 📋 Available Scripts\n\n### Python Scripts\n\n| Script | Description | Usage |\n|--------|-------------|-------|\n| `connect_to_frontend.py` | Interactive connection to your app | `python3 connect_to_frontend.py [port]` |\n| `run_forever.py` | Infinite session with auto-recovery | `python3 run_forever.py [port]` |\n| `connect_24hours.py` | 24-hour continuous session | `python3 connect_24hours.py [port]` |\n| `connect_2hours.py` | 2-hour timed session | `python3 connect_2hours.py [port]` |\n| `selenium_test.py` | Basic Selenium functionality test | `python3 selenium_test.py` |\n| `test_connectivity.py` | Test connection to localhost | `python3 test_connectivity.py` |\n| `test_server.py` | Simple test server for demos | `python3 test_server.py` |\n\n### npm Scripts\n\n```bash\nnpm run start:container    # Start Docker container\nnpm run stop:container     # Stop Docker container\nnpm run logs              # View container logs\nnpm run status            # Check container status\nnpm run test              # Run JavaScript Selenium test\nnpm run test:python       # Run Python Selenium test\nnpm run test:connectivity # Test localhost connectivity\nnpm run test:curl         # Test with curl\n```\n\n## 🔧 Configuration\n\n### Docker Compose Settings\n\nThe `docker-compose.yml` includes optimized settings for Chrome 97:\n\n```yaml\nservices:\n  selenium-chrome:\n    image: selenium/standalone-chrome:97.0\n    platform: linux/amd64\n    ports:\n      - \"4444:4444\"  # WebDriver\n      - \"7900:7900\"  # noVNC\n    environment:\n      - SE_VNC_NO_PASSWORD=1\n      - SE_SCREEN_WIDTH=1920\n      - SE_SCREEN_HEIGHT=1080\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n```\n\n### Frontend Server Requirements\n\nYour development server must be accessible from Docker:\n\n#### ✅ Correct Configuration\n\n```bash\n# Next.js\nnpx next dev -H 0.0.0.0\n\n# Create React App\nHOST=0.0.0.0 npm start\n\n# Vite\nnpm run dev -- --host 0.0.0.0\n\n# Express.js\napp.listen(3000, '0.0.0.0', () =\u003e {\n  console.log('Server running on 0.0.0.0:3000');\n});\n```\n\n#### ❌ Won't Work\n\n```bash\n# These bind only to localhost/127.0.0.1\nnpm start                    # Default CRA\nnpx next dev                # Default Next.js\nnpm run dev                 # Default Vite\n```\n\n## 🧪 Testing Your Application\n\n### Basic Compatibility Test\n\n```python\nfrom selenium import webdriver\nfrom selenium.webdriver.chrome.options import Options\n\noptions = Options()\noptions.add_argument('--no-sandbox')\noptions.add_argument('--disable-dev-shm-usage')\n\ndriver = webdriver.Remote(\n    command_executor=\"http://localhost:4444/wd/hub\",\n    options=options\n)\n\ndriver.get(\"http://host.docker.internal:3000\")\nprint(f\"Page title: {driver.title}\")\ndriver.quit()\n```\n\n### Advanced Testing Features\n\n- **Screenshots**: Capture visual state at any point\n- **Element Interaction**: Click, type, scroll, hover\n- **JavaScript Execution**: Run custom scripts in Chrome 97\n- **Network Monitoring**: Check requests and responses\n- **Performance Testing**: Measure load times and rendering\n\n## 🛠️ Troubleshooting\n\n### Container Issues\n\n```bash\n# Check container status\ndocker-compose ps\n\n# View logs\ndocker-compose logs selenium-chrome\n\n# Restart container\ndocker-compose restart selenium-chrome\n\n# Complete reset\ndocker-compose down \u0026\u0026 docker-compose up -d\n```\n\n### Connection Issues\n\n1. **Can't reach localhost**: Ensure your server binds to `0.0.0.0`, not `127.0.0.1`\n2. **WebDriver not responding**: Check if container is running with `docker-compose ps`\n3. **noVNC not loading**: Wait 30 seconds after starting container\n4. **Port conflicts**: Make sure ports 4444 and 7900 are available\n\n### Common Solutions\n\n```bash\n# Test connectivity from your Mac\ncurl -I http://localhost:3000\n\n# Test from inside container\ndocker exec selenium-chrome-97 curl -I http://host.docker.internal:3000\n\n# Check firewall (macOS)\nsudo pfctl -sr | grep 3000\n```\n\n## 📁 Project Structure\n\n```\nchrome-97-simulator/\n├── 🐳 docker-compose.yml          # Container configuration\n├── 🐍 connect_to_frontend.py      # Main connection script\n├── ♾️  run_forever.py              # Infinite session runner\n├── ⏰ connect_24hours.py          # 24-hour session\n├── ⏰ connect_2hours.py           # 2-hour session\n├── 🧪 selenium_test.py            # Basic Selenium test\n├── 🔗 test_connectivity.py        # Connection tester\n├── 🌐 test_server.py              # Simple test server\n├── 📜 test_curl.sh                # Shell connectivity test\n├── 📦 package.json                # Node.js dependencies\n├── 🐍 requirements.txt            # Python dependencies\n└── 📖 README.md                   # This file\n```\n\n## 🎯 Use Cases\n\n### Development \u0026 Testing\n- **Legacy Browser Support**: Test your modern app in Chrome 97\n- **Regression Testing**: Ensure new features don't break in older browsers\n- **CSS Compatibility**: Validate CSS Grid, Flexbox, and modern features\n- **JavaScript Compatibility**: Test ES6+ features and polyfills\n\n### CI/CD Integration\n```yaml\n# GitHub Actions example\n- name: Test in Chrome 97\n  run: |\n    docker-compose up -d\n    python3 selenium_test.py\n    docker-compose down\n```\n\n### Educational \u0026 Training\n- **Browser Evolution**: Show differences between Chrome versions\n- **Compatibility Workshops**: Hands-on legacy browser testing\n- **Selenium Training**: Learn automation in a controlled environment\n\n## 🔄 Session Management\n\n### Quick Session (10 minutes)\n```bash\npython3 connect_to_frontend.py 3000\n```\n\n### Extended Sessions\n```bash\npython3 connect_2hours.py 3000      # 2 hours\npython3 connect_24hours.py 3000     # 24 hours\n```\n\n### Infinite Session (Recommended for development)\n```bash\npython3 run_forever.py 3000\n```\n\nFeatures of infinite session:\n- ♾️ Runs until manually stopped\n- 🔄 Auto-reconnection on failures\n- 🐳 Container restart on crashes\n- 📊 Regular status reports\n- 🛡️ Bulletproof error recovery\n\n## 🌟 Advanced Features\n\n### Custom Chrome Options\n```python\noptions = Options()\noptions.add_argument('--window-size=1600,1000')\noptions.add_argument('--disable-web-security')\noptions.add_argument('--allow-running-insecure-content')\n```\n\n### Multi-Viewport Testing\n```python\nviewports = [\n    {'width': 375, 'height': 667},   # Mobile\n    {'width': 768, 'height': 1024},  # Tablet\n    {'width': 1920, 'height': 1080}  # Desktop\n]\n\nfor viewport in viewports:\n    driver.set_window_size(viewport['width'], viewport['height'])\n    # Test your responsive design\n```\n\n### Performance Monitoring\n```python\n# Measure page load time\nstart_time = time.time()\ndriver.get(\"http://host.docker.internal:3000\")\nload_time = time.time() - start_time\nprint(f\"Page loaded in {load_time:.2f} seconds\")\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit your changes: `git commit -m 'Add amazing feature'`\n4. Push to the branch: `git push origin feature/amazing-feature`\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🆘 Support\n\n- **Issues**: [GitHub Issues](https://github.com/morbargig/chrome-97-simulator/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/morbargig/chrome-97-simulator/discussions)\n- **Documentation**: This README and inline code comments\n\n## 🙏 Acknowledgments\n\n- [Selenium](https://selenium.dev/) - Web automation framework\n- [Docker](https://docker.com/) - Containerization platform\n- [Chrome 97](https://chromereleases.googleblog.com/) - The browser version we're simulating\n- [noVNC](https://novnc.com/) - Browser-based VNC client\n\n---\n\n**⭐ Star this repository if it helps you test your applications in Chrome 97!**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorbargig%2Fchrome-97-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorbargig%2Fchrome-97-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorbargig%2Fchrome-97-simulator/lists"}