replace puppeteer with playwright
Build and Push Docker Images / build-and-push (push) Has been cancelled

This commit is contained in:
2025-07-04 13:15:59 +02:00
parent 8c4a27c87e
commit 129c6a74e8
10 changed files with 1030 additions and 463 deletions
@@ -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())