64 lines
2.8 KiB
Python
64 lines
2.8 KiB
Python
import sys
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
|
|
BASE_URL = "http://192.168.195.241:38353"
|
|
PAGES = [
|
|
("zh Vulture", f"{BASE_URL}/zh/home/Space_Shuttles/Vulture_Shuttle"),
|
|
("en Vulture", f"{BASE_URL}/en/home/Space_Shuttles/Vulture_Shuttle"),
|
|
("zh Echo", f"{BASE_URL}/zh/home/Space_Shuttles/Echo_Shuttle"),
|
|
("en Echo", f"{BASE_URL}/en/home/Space_Shuttles/Echo_Shuttle"),
|
|
("zh Enterprise", f"{BASE_URL}/zh/home/Space_Shuttles/Enterprise_Shuttle"),
|
|
("en Enterprise", f"{BASE_URL}/en/home/Space_Shuttles/Enterprise_Shuttle"),
|
|
]
|
|
|
|
|
|
def main():
|
|
errors = []
|
|
print("lightbox_validation_start", flush=True)
|
|
with sync_playwright() as playwright:
|
|
print("launching_chromium", flush=True)
|
|
browser = playwright.chromium.launch(headless=True, timeout=30000)
|
|
for label, url in PAGES:
|
|
print(f"checking={label}", flush=True)
|
|
page = browser.new_page(viewport={"width": 1366, "height": 900})
|
|
page.goto(url, wait_until="commit", timeout=30000)
|
|
page.wait_for_timeout(1500)
|
|
article = page.locator(".wiki-article, .vulture-article").first
|
|
image = page.locator(".wiki-article img[data-wiki-asset], .vulture-article img[data-wiki-asset]").first
|
|
image.wait_for(state="visible", timeout=20000)
|
|
ready = article.get_attribute("data-lightbox-ready")
|
|
print(f"{label}: ready={ready}", flush=True)
|
|
if ready != "1":
|
|
errors.append(f"{label}: lightbox script not installed, ready={ready!r}")
|
|
page.close()
|
|
continue
|
|
image.click(timeout=10000)
|
|
overlay = page.locator(".wiki-image-lightbox:not([hidden])")
|
|
try:
|
|
overlay.wait_for(state="visible", timeout=5000)
|
|
preview_src = overlay.locator("img").first.get_attribute("src") or ""
|
|
caption = overlay.locator("figcaption").first.inner_text(timeout=5000).strip()
|
|
if not preview_src:
|
|
errors.append(f"{label}: empty preview src")
|
|
if not caption:
|
|
errors.append(f"{label}: empty caption")
|
|
print(f"{label}: lightbox_open=True caption_len={len(caption)} preview_src={preview_src[:96]}", flush=True)
|
|
page.keyboard.press("Escape")
|
|
page.wait_for_function("!document.querySelector('.wiki-image-lightbox:not([hidden])')", timeout=5000)
|
|
except Exception as exc:
|
|
errors.append(f"{label}: {type(exc).__name__}: {exc}")
|
|
page.close()
|
|
browser.close()
|
|
if errors:
|
|
print("ERRORS:")
|
|
for error in errors:
|
|
print(error)
|
|
return 1
|
|
print("lightbox_click_validation=ok")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |