Raiju/tests/browser-check.py
2026-10-25 06:05:42 +03:00

36 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""Optional UI checks. Requires a local Playwright/Chromium installation."""
import os
from pathlib import Path
import subprocess
import tempfile
import sys
import json
from support import ROOT, Site
with tempfile.TemporaryDirectory(prefix="raiju-browser-review-") as folder:
site = Site(folder).start()
script = sys.argv[1] if len(sys.argv) > 1 else 'browser-check.js'
if script == 'responsive-check.js':
menu_page = site.root / 'content/pages/en_services__test.json'
menu_content = json.loads(menu_page.read_text())
menu_content['title'] = 'Leistungen für internationale Geschäftskunden'
menu_page.write_text(json.dumps(menu_content))
settings = json.loads((site.root / 'content/settings.json').read_text())
settings['modules']['ai'] = True
settings['email'] = {'method': 'smtp', 'smtpHost': 'smtp.example.invalid', 'recipientEmail': 'test@example.invalid', 'fromEmail': 'site@example.invalid', 'smtpPort': 587, 'smtpEncryption': 'tls'}
(site.root / 'content/ai-settings.json').write_text(json.dumps({'enabled': True, 'provider': 'kie', 'baseUrl': 'https://api.kie.ai', 'apiKey': 'fixture-only', 'features': {'backendAssistant': False, 'seoTextGeneration': True, 'imageGeneration': True}}))
settings['backup'] = {'remote_targets': [{'id': 'review-s3', 'type': 's3',
'name': 'Website backup with a longer descriptive name', 'enabled': False,
'settings': {'endpoint': 'https://storage.example.invalid', 'region': 'eu-west-1',
'bucket': 'website-archive', 'prefix': 'raiju/production', 'access_key': 'fixture'}}]}
(site.root / 'content/settings.json').write_text(json.dumps(settings))
screenshots = Path(tempfile.mkdtemp(prefix="raiju-browser-evidence-"))
try:
environment = dict(os.environ, REVIEW_PASSWORD=site.password,
REVIEW_URL=f"http://127.0.0.1:{site.port}", REVIEW_SCREENSHOTS=str(screenshots))
subprocess.run(["node", str(ROOT / "tests" / script)], env=environment, cwd=ROOT, check=True, timeout=120)
finally:
print("Screenshots:", screenshots)
site.close()