#!/usr/bin/env python3
"""Visual QA: capture desktop + mobile screenshots of the running app."""
import os, sys
from playwright.sync_api import sync_playwright

BASE = os.environ.get("BASE", "http://127.0.0.1:8000")
OUT = "/home/user/aquacoin-marketplace/docs/screenshots"
os.makedirs(OUT, exist_ok=True)

PAGES_ADMIN = [
    ("home", "/"),
    ("checkout", "/checkout?qty=27"),
    ("admin-dashboard", "/admin"),
    ("admin-orders", "/admin/orders"),
    ("admin-order", "/admin/orders/2"),
    ("admin-deliveries", "/admin/deliveries"),
    ("admin-settlements", "/admin/settlements"),
    ("admin-managers", "/admin/managers"),
    ("admin-settings", "/admin/settings"),
    ("admin-health", "/admin/health"),
]
PAGES_MANAGER = [
    ("manager-dashboard", "/manager"),
    ("manager-settlements", "/manager/settlements"),
    ("manager-profile", "/manager/profile"),
]


def login(page, username, password):
    page.goto(BASE + "/login", wait_until="networkidle")
    page.fill("#username", username)
    page.fill("#password", password)
    page.click("button[type=submit]")
    page.wait_for_load_state("networkidle")


def shoot(page, name, path, full=True):
    page.goto(BASE + path, wait_until="networkidle")
    page.wait_for_timeout(300)
    page.screenshot(path=f"{OUT}/{name}.png", full_page=full)
    print("saved", name)


with sync_playwright() as p:
    browser = p.chromium.launch(args=["--no-sandbox"])

    ctx = browser.new_context(viewport={"width": 1440, "height": 900}, locale="fa-IR",
                              device_scale_factor=1)
    page = ctx.new_page()
    login(page, "winix_admin", "Winix@AquaMC-1404")
    for name, path in PAGES_ADMIN:
        shoot(page, name, path)
    ctx.close()

    ctx = browser.new_context(viewport={"width": 1440, "height": 900}, locale="fa-IR")
    page = ctx.new_page()
    login(page, "aqua_manager", "Aqua@Manager-1404")
    for name, path in PAGES_MANAGER:
        shoot(page, name, path)
    ctx.close()

    # Mobile
    ctx = browser.new_context(viewport={"width": 390, "height": 844}, locale="fa-IR",
                              is_mobile=True, has_touch=True, device_scale_factor=2)
    page = ctx.new_page()
    login(page, "winix_admin", "Winix@AquaMC-1404")
    shoot(page, "mobile-home", "/")
    shoot(page, "mobile-admin", "/admin")
    shoot(page, "mobile-orders", "/admin/orders")
    ctx.close()

    browser.close()
print("done →", OUT)
