Spaces:
Build error
Build error
| """End-to-end tests for PageParse using Playwright. | |
| Requires: pip install playwright && playwright install chromium | |
| Run: pytest tests/test_e2e.py | |
| """ | |
| import pytest | |
| import subprocess | |
| import time | |
| import sys | |
| from pathlib import Path | |
| pytest.importorskip("playwright") | |
| HERE = Path(__file__).resolve().parent.parent | |
| SERVER_SCRIPT = str(HERE / "src" / "pageparse" / "cli.py") | |
| def server(): | |
| proc = subprocess.Popen( | |
| [sys.executable, "-m", "pageparse.cli", "serve", "--port", "8765"], | |
| cwd=HERE, | |
| stdout=subprocess.PIPE, | |
| stderr=subprocess.PIPE, | |
| ) | |
| time.sleep(3) | |
| yield | |
| proc.terminate() | |
| proc.wait() | |
| def browser(): | |
| from playwright.sync_api import sync_playwright | |
| with sync_playwright() as p: | |
| browser = p.chromium.launch(headless=True) | |
| yield browser | |
| browser.close() | |
| def test_homepage_loads(server, browser): | |
| page = browser.new_page() | |
| page.goto("http://127.0.0.1:8765/") | |
| assert "PageParse" in page.title() or "PageParse" in page.content() | |
| page.close() | |
| def test_upload_form_present(server, browser): | |
| page = browser.new_page() | |
| page.goto("http://127.0.0.1:8765/") | |
| content = page.content() | |
| assert "upload" in content.lower() or "ingest" in content.lower() | |
| page.close() | |
| def test_telemetry_endpoint(server): | |
| import urllib.request | |
| import json | |
| resp = urllib.request.urlopen("http://127.0.0.1:8765/telemetry") | |
| data = json.loads(resp.read()) | |
| assert "cpu_percent" in data | |
| assert "total_gb" in data | |
| def test_airgap_mode(server): | |
| import urllib.request | |
| import json | |
| req = urllib.request.Request( | |
| "http://127.0.0.1:8765/airgap", | |
| data=json.dumps({"airgap": True}).encode(), | |
| headers={"Content-Type": "application/json"}, | |
| method="POST", | |
| ) | |
| resp = urllib.request.urlopen(req) | |
| data = json.loads(resp.read()) | |
| assert data["airgap"] is True | |
| resp = urllib.request.urlopen("http://127.0.0.1:8765/airgap") | |
| data = json.loads(resp.read()) | |
| assert data["airgap"] is True | |
| def test_stats_endpoint(server): | |
| import urllib.request | |
| import json | |
| resp = urllib.request.urlopen("http://127.0.0.1:8765/stats") | |
| data = json.loads(resp.read()) | |
| assert "sources" in data | |
| assert "records" in data | |
| def test_metrics_endpoint(server): | |
| import urllib.request | |
| resp = urllib.request.urlopen("http://127.0.0.1:8765/metrics") | |
| content = resp.read().decode() | |
| assert "pageparse_http_requests_total" in content | |
| def test_translate_endpoint(server): | |
| import urllib.request | |
| import json | |
| req = urllib.request.Request( | |
| "http://127.0.0.1:8765/translate", | |
| data=json.dumps({"text": "Hello", "target_lang": "Hindi"}).encode(), | |
| headers={"Content-Type": "application/json"}, | |
| ) | |
| resp = urllib.request.urlopen(req) | |
| data = json.loads(resp.read()) | |
| assert "translated_text" in data | |