#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
改进版本测试 - 使用同步 Playwright 和 slow_mo
"""

import json
import sys
import os
from datetime import datetime

print("="*60)
print("  改进版本测试")
print("="*60)
print()

# 检查配置
if not os.path.exists("config.json"):
    print("❌ 配置文件不存在")
    print("请运行: python mdp_termination.py --config")
    sys.exit(1)

with open("config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

print(f"配置:")
print(f"  CRM URL: {config['crm_url']}")
print(f"  用户名: {config['crm_username']}")
print()

# 导入密码管理
try:
    import mdp_termination
    password = mdp_termination.PasswordManager.decrypt_password(config.get('password_file', 'password.enc'))
    print(f"✓ 密码解密成功")
    print()
except Exception as e:
    print(f"❌ 密码解密失败: {e}")
    sys.exit(1)

# 测试同步 Playwright
print("测试同步 Playwright + slow_mo...")
print()

try:
    from playwright.sync_api import sync_playwright
    print("✓ Playwright 已导入")
except ImportError as e:
    print(f"❌ Playwright 未安装: {e}")
    sys.exit(1)

async def test_sync_login():
    """使用同步 Playwright 测试登录"""
    from playwright.sync_api import sync_playwright

    print("[1/4] 启动浏览器 (slow_mo=100)...")
    print("  (应该会看到浏览器窗口)")
    print()

    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=False,
            slow_mo=100,  # 🔥 关键改进
            channel="chrome"  # 使用系统 Chrome
        )

        print("✓ 浏览器已启动")
        print()

        context = browser.new_context()
        page = context.new_page()

        try:
            url = config['crm_url']
            print(f"[2/4] 访问 CRM: {url}")
            page.goto(f"{url}/MDP/")

            print("✓ 页面已加载")
            print()

            # 等待让你看到
            print("浏览器将保持打开 5 秒...")
            import time
            time.sleep(5)

            # 检查 cookies
            cookies = context.cookies()
            print(f"[3/4] 提取 Cookies: {len(cookies)} 个")

            for cookie in cookies:
                if cookie['name'] in ['ReqClientId', 'orgId']:
                    print(f"  ✓ {cookie['name']}: {cookie['value'][:20]}...")

            print()

            # 获取页面标题
            title = page.title()
            print(f"[4/4] 页面标题: {title}")
            print()

            if "MDP" in title or "main.aspx" in page.url:
                print("✓ 测试成功！浏览器正常工作")
            else:
                print("⚠ 页面可能未完全加载")

        finally:
            print()
            print("关闭浏览器...")
            browser.close()

    print()
    print("="*60)
    print("  测试完成！")
    print("="*60)
    print()
    print("✓ 同步 Playwright 工作正常")
    print("✓ slow_mo 参数有效")
    print("✓ 可以看到浏览器窗口")
    print()
    print("现在可以运行实际的 termination 脚本了！")

# 运行测试
try:
    test_sync_login()
except Exception as e:
    print(f"❌ 测试失败: {e}")
    import traceback
    traceback.print_exc()
    sys.exit(1)
