Skip to main content
Glama

Chromium ARM64 Browser

by nfodor
vm_test_simulation.py7.78 kB
#!/usr/bin/env python3 """ VM Test Simulation - Validates ARM64 browser setup from scratch Simulates what would happen in a fresh VM environment """ import subprocess import os import sys import tempfile import shutil from pathlib import Path def run_command(cmd, description, check_output=True): """Run command and capture result""" print(f"\n🔍 {description}") print(f"📝 Command: {cmd}") try: if isinstance(cmd, str): result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30) else: result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) print(f"✅ Exit code: {result.returncode}") if result.stdout: print(f"📤 STDOUT: {result.stdout[:200]}...") if result.stderr: print(f"⚠️ STDERR: {result.stderr[:200]}...") if check_output and result.returncode != 0: return False, f"Command failed with exit code {result.returncode}" return True, result.stdout + result.stderr except subprocess.TimeoutExpired: return False, "Command timed out" except Exception as e: return False, f"Exception: {e}" def check_prerequisites(): """Check if all prerequisites are available""" print("\n🔧 CHECKING PREREQUISITES") print("=" * 50) issues = [] # Check Node.js success, output = run_command("node --version", "Check Node.js version") if not success: issues.append("❌ Node.js not found - run: sudo apt install nodejs") else: print(f"✅ Node.js: {output.strip()}") # Check npm success, output = run_command("npm --version", "Check npm version") if not success: issues.append("❌ npm not found - run: sudo apt install npm") else: print(f"✅ npm: {output.strip()}") # Check Python3 success, output = run_command("python3 --version", "Check Python3 version") if not success: issues.append("❌ Python3 not found - run: sudo apt install python3") else: print(f"✅ Python3: {output.strip()}") # Check Chromium success, output = run_command("chromium-browser --version", "Check Chromium version") if not success: issues.append("❌ Chromium not found - run: sudo apt install chromium-browser") else: print(f"✅ Chromium: {output.strip()}") return issues def simulate_fresh_install(): """Simulate what happens in a fresh VM""" print("\n🚀 SIMULATING FRESH VM INSTALL") print("=" * 50) issues = [] # Create a temp directory to simulate fresh clone with tempfile.TemporaryDirectory() as temp_dir: test_dir = Path(temp_dir) / "claude-arm64-browser" test_dir.mkdir() print(f"📁 Created test directory: {test_dir}") # Copy essential files to simulate git clone current_dir = Path(__file__).parent essential_files = [ "index.js", "package.json", "arm64_browser.py", "simple_browser.py", "README.md" ] for file in essential_files: src = current_dir / file if src.exists(): shutil.copy2(src, test_dir / file) print(f"✅ Copied {file}") else: issues.append(f"❌ Missing essential file: {file}") # Change to test directory os.chdir(test_dir) print(f"📂 Changed to: {os.getcwd()}") # Test npm install if (test_dir / "package.json").exists(): success, output = run_command("npm install", "Install npm dependencies") if not success: issues.append(f"❌ npm install failed: {output}") else: issues.append("❌ package.json missing - cannot run npm install") # Test the one-liner one_liner = "python3 -c \"import sys; sys.path.append('.'); import arm64_browser; print('✅ ARM64 Browser Works!' if 'error' not in arm64_browser.navigate('https://example.com').lower() else '❌ Failed')\"" print(f"\n🧪 Testing one-liner from: {os.getcwd()}") success, output = run_command(one_liner, "Test one-liner verification", check_output=False) if "✅ ARM64 Browser Works!" in output: print("🎉 ONE-LINER TEST PASSED!") elif "❌ Failed" in output: issues.append("❌ One-liner test failed - browser automation not working") else: issues.append(f"❌ One-liner unexpected output: {output}") # Test cross-session usage simulation cross_session_test = f""" import sys sys.path.append('{test_dir}') import arm64_browser result = arm64_browser.navigate('https://httpbin.org/get') print('Cross-session test:', 'SUCCESS' if 'error' not in result.lower() else 'FAILED') """ success, output = run_command(f"python3 -c \"{cross_session_test}\"", "Test cross-session usage") if "SUCCESS" not in output: issues.append(f"❌ Cross-session test failed: {output}") return issues def validate_documentation(): """Check if documentation matches reality""" print("\n📚 VALIDATING DOCUMENTATION") print("=" * 50) issues = [] # Check if README.md exists and has required sections readme_path = Path("README.md") if not readme_path.exists(): issues.append("❌ README.md missing") return issues readme_content = readme_path.read_text() required_sections = [ "### Installation", "### ⚡ Quick Test (One-Liner)", "git clone https://github.com/nfodor/claude-arm64-browser", "npm install", "arm64_browser.navigate" ] for section in required_sections: if section not in readme_content: issues.append(f"❌ README missing: {section}") else: print(f"✅ README contains: {section}") return issues def main(): """Run complete VM simulation test""" print("🖥️ VM INSTALLATION TEST SIMULATION") print("=" * 60) print("This simulates what would happen in a fresh VM environment") all_issues = [] # Check prerequisites prereq_issues = check_prerequisites() all_issues.extend(prereq_issues) # Validate documentation doc_issues = validate_documentation() all_issues.extend(doc_issues) # Simulate fresh install install_issues = simulate_fresh_install() all_issues.extend(install_issues) # Summary print("\n📊 TEST SUMMARY") print("=" * 50) if not all_issues: print("🎉 ALL TESTS PASSED! Ready for VM deployment") print("✅ Prerequisites available") print("✅ Documentation complete") print("✅ Installation process works") print("✅ One-liner verification works") print("✅ Cross-session usage works") else: print(f"⚠️ FOUND {len(all_issues)} ISSUES:") for i, issue in enumerate(all_issues, 1): print(f"{i}. {issue}") print("\n🔧 RECOMMENDED FIXES:") if any("Node.js" in issue for issue in all_issues): print("- sudo apt update && sudo apt install nodejs npm") if any("Chromium" in issue for issue in all_issues): print("- sudo apt install chromium-browser") if any("Python3" in issue for issue in all_issues): print("- sudo apt install python3") return len(all_issues) == 0 if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

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/nfodor/mcp-chromium-arm64'

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