Spaces:
Sleeping
Sleeping
| """Full-app visual check: launch the real Gradio app, open Explore, enter a | |
| place, and screenshot the live 3D diorama as a visitor would see it.""" | |
| from __future__ import annotations | |
| import os | |
| import sys | |
| import time | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) | |
| os.environ.setdefault("USE_MOCK_AI", "true") | |
| from playwright.sync_api import sync_playwright # noqa: E402 | |
| ROOT = Path(__file__).resolve().parent.parent | |
| PORT = 7866 | |
| def main(): | |
| import app as appmod | |
| from ui import assets | |
| demo = appmod.build_app() | |
| kwargs = {"server_name": "127.0.0.1", "server_port": PORT, "share": False, | |
| "allowed_paths": assets.allowed_paths(), "prevent_thread_lock": True} | |
| if appmod.GRADIO_MAJOR >= 6: | |
| kwargs["css"] = appmod.CUSTOM_CSS | |
| kwargs["theme"] = appmod.REALM_THEME | |
| demo.launch(**kwargs) | |
| time.sleep(3) | |
| url = f"http://127.0.0.1:{PORT}/" | |
| with sync_playwright() as pw: | |
| browser = pw.chromium.launch(args=["--use-gl=swiftshader", "--enable-webgl", "--ignore-gpu-blocklist"]) | |
| page = browser.new_page(viewport={"width": 1280, "height": 900}) | |
| errors = [] | |
| page.on("pageerror", lambda e: errors.append(str(e))) | |
| page.goto(url, wait_until="domcontentloaded") | |
| page.wait_for_timeout(4000) | |
| # open Explore tab | |
| page.get_by_role("tab", name="Explore").click() | |
| page.wait_for_timeout(1500) | |
| # click the Ember Crossroads (6th place) so we land on the bonfire scene | |
| items = page.locator(".places-gallery button, .places-gallery .thumbnail-item, .places-gallery img") | |
| n = items.count() | |
| (items.nth(5) if n > 5 else items.first).click() | |
| page.wait_for_timeout(8000) # let three.js + iframe load | |
| frame = page.locator(".diorama-frame") | |
| if frame.count(): | |
| frame.scroll_into_view_if_needed() | |
| page.wait_for_timeout(3000) | |
| out = ROOT / "assets" / "_app_shot.png" | |
| page.screenshot(path=str(out), full_page=False) | |
| print("pageerrors:", errors if errors else "none") | |
| print("shot:", out) | |
| browser.close() | |
| demo.close() | |
| if __name__ == "__main__": | |
| main() | |