Files
projects/Dockers/puppeteer-api/test_playwright_migration.py
T
Bram 129c6a74e8
Build and Push Docker Images / build-and-push (push) Has been cancelled
replace puppeteer with playwright
2025-07-04 13:15:59 +02:00

120 lines
3.6 KiB
Python

#!/usr/bin/env python3
"""
Test script to verify Playwright migration works correctly
"""
import asyncio
import sys
import os
# Add the current directory to Python path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from playwright.async_api import async_playwright
async def test_playwright_installation():
"""Test that Playwright is properly installed and can launch a browser"""
print("Testing Playwright installation...")
try:
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()
# Test basic navigation
response = await page.goto('https://example.com', wait_until='networkidle', timeout=10000)
title = await page.title()
print(f"✅ Successfully navigated to example.com")
print(f" Title: {title}")
print(f" Status: {response.status if response else 'No response'}")
await context.close()
await browser.close()
return True
except Exception as e:
print(f"❌ Playwright test failed: {e}")
return False
async def test_browser_utils():
"""Test the updated browser_utils module"""
print("\nTesting browser_utils module...")
try:
from app.utils.browser_utils import safe_browser_operation
async def test_operation(page):
await page.goto('https://example.com', wait_until='networkidle', timeout=10000)
title = await page.title()
return {"status": "success", "title": title}
result = await safe_browser_operation('https://example.com', test_operation)
if result.get('status') == 'success':
print(f"✅ browser_utils test passed")
print(f" Title: {result.get('title')}")
return True
else:
print(f"❌ browser_utils test failed: {result}")
return False
except Exception as e:
print(f"❌ browser_utils test failed: {e}")
return False
async def test_browser_service():
"""Test the updated browser service"""
print("\nTesting browser service...")
try:
from app.services.browser import visit_url_service
result = await visit_url_service('https://example.com')
if result.get('status') == 'success':
print(f"✅ browser service test passed")
print(f" Content length: {len(result.get('content', ''))}")
return True
else:
print(f"❌ browser service test failed: {result}")
return False
except Exception as e:
print(f"❌ browser service test failed: {e}")
return False
async def main():
"""Run all tests"""
print("🧪 Running Playwright migration tests...\n")
tests = [
test_playwright_installation,
test_browser_utils,
test_browser_service,
]
results = []
for test in tests:
try:
result = await test()
results.append(result)
except Exception as e:
print(f"❌ Test {test.__name__} failed with exception: {e}")
results.append(False)
print(f"\n📊 Test Results:")
print(f" Passed: {sum(results)}/{len(results)}")
if all(results):
print("🎉 All tests passed! Playwright migration is working correctly.")
return 0
else:
print("❌ Some tests failed. Please check the errors above.")
return 1
if __name__ == "__main__":
exit_code = asyncio.run(main())
sys.exit(exit_code)