replace puppeteer with playwright
Build and Push Docker Images / build-and-push (push) Has been cancelled
Build and Push Docker Images / build-and-push (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Installation script for Playwright migration
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
def run_command(command, description):
|
||||
"""Run a command and handle errors"""
|
||||
print(f"🔄 {description}...")
|
||||
try:
|
||||
result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
|
||||
print(f"✅ {description} completed successfully")
|
||||
return True
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ {description} failed:")
|
||||
print(f" Error: {e.stderr}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
"""Main installation process"""
|
||||
print("🚀 Playwright Migration Installation Script")
|
||||
print("=" * 50)
|
||||
|
||||
# Check if we're in a virtual environment
|
||||
if not hasattr(sys, 'real_prefix') and not (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
|
||||
print("⚠️ Warning: It's recommended to run this in a virtual environment")
|
||||
response = input("Continue anyway? (y/N): ")
|
||||
if response.lower() != 'y':
|
||||
print("Installation cancelled.")
|
||||
return 1
|
||||
|
||||
# Install Playwright
|
||||
if not run_command("pip install playwright", "Installing Playwright"):
|
||||
return 1
|
||||
|
||||
# Install Playwright browsers
|
||||
if not run_command("playwright install chromium", "Installing Chromium browser"):
|
||||
return 1
|
||||
|
||||
# Install system dependencies (for Linux)
|
||||
if os.name == 'posix' and os.uname().sysname == 'Linux':
|
||||
if not run_command("playwright install-deps chromium", "Installing system dependencies"):
|
||||
print("⚠️ System dependencies installation failed. You may need to install them manually.")
|
||||
print(" On Ubuntu/Debian: sudo apt-get install -y libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2")
|
||||
|
||||
# Test the installation
|
||||
print("\n🧪 Testing Playwright installation...")
|
||||
test_script = """
|
||||
import asyncio
|
||||
from playwright.async_api import async_playwright
|
||||
|
||||
async def test():
|
||||
async with async_playwright() as p:
|
||||
browser = await p.chromium.launch(headless=True)
|
||||
context = await browser.new_context()
|
||||
page = await context.new_page()
|
||||
await page.goto('https://example.com')
|
||||
title = await page.title()
|
||||
await context.close()
|
||||
await browser.close()
|
||||
return title
|
||||
|
||||
result = asyncio.run(test())
|
||||
print(f"✅ Playwright test successful! Page title: {result}")
|
||||
"""
|
||||
|
||||
try:
|
||||
result = subprocess.run([sys.executable, '-c', test_script],
|
||||
capture_output=True, text=True, check=True)
|
||||
print(result.stdout.strip())
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ Playwright test failed: {e.stderr}")
|
||||
return 1
|
||||
|
||||
print("\n🎉 Playwright installation completed successfully!")
|
||||
print("\nNext steps:")
|
||||
print("1. Update your requirements.txt to include 'playwright==1.40.0'")
|
||||
print("2. Update your Dockerfile to install Playwright browsers")
|
||||
print("3. Test your application with: python test_playwright_migration.py")
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user