Files
novalon-manage-system/test-suite/tests/e2e/test_login_complete.py
T
张翔 b0f91d74f5 feat: 统一JWT密钥配置并修复签名验证问题
修复前端签名生成中bodyString硬编码问题
添加start-frontend.sh脚本启动前端服务
统一manage-app和gateway的JWT密钥配置
修复Repository扫描路径问题
更新测试配置和依赖
重构表名映射为sys_user和sys_role
完善用户实体类字段映射
添加集成测试配置和测试用例
2026-04-02 12:28:49 +08:00

104 lines
3.6 KiB
Python

"""
E2E登录功能完整验证
验证登录成功后的所有状态
"""
from playwright.sync_api import sync_playwright
import time
def test_login_complete():
"""完整测试登录功能"""
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
context = browser.new_context()
page = context.new_page()
try:
print("=" * 60)
print("E2E登录功能完整验证")
print("=" * 60)
print("\n1. 访问登录页面...")
page.goto('http://localhost:3002/login')
page.wait_for_load_state('networkidle')
time.sleep(1)
print("\n2. 填写登录表单...")
page.fill('input[type="text"], input[placeholder*="用户名"]', 'admin')
page.fill('input[type="password"]', 'admin123')
print(" 用户名: admin")
print(" 密码: admin123")
print("\n3. 点击登录按钮...")
with page.expect_navigation(timeout=10000):
page.click('button:has-text("登录")')
print("\n4. 等待页面加载...")
time.sleep(3)
page.wait_for_load_state('networkidle')
print("\n5. 检查登录状态...")
current_url = page.url
print(f" 当前URL: {current_url}")
token = page.evaluate('() => localStorage.getItem("token")')
userId = page.evaluate('() => localStorage.getItem("userId")')
username = page.evaluate('() => localStorage.getItem("username")')
print(f" Token: {token[:50] if token else 'None'}...")
print(f" UserId: {userId}")
print(f" Username: {username}")
print("\n6. 检查页面内容...")
page.screenshot(path='/tmp/login_complete.png', full_page=True)
print(" 截图已保存到 /tmp/login_complete.png")
page_title = page.title()
print(f" 页面标题: {page_title}")
has_dashboard = page.locator('text=Dashboard, text=仪表盘, text=首页').count() > 0
print(f" 包含Dashboard内容: {has_dashboard}")
print("\n" + "=" * 60)
print("验证结果:")
print("=" * 60)
success = True
if token and userId and username:
print("✅ localStorage数据正确")
else:
print("❌ localStorage数据缺失")
success = False
if '/login' not in current_url:
print("✅ 已跳转离开登录页")
else:
print("⚠️ 仍在登录页(可能是路由问题)")
if has_dashboard:
print("✅ Dashboard内容已加载")
else:
print("⚠️ Dashboard内容未找到")
print("=" * 60)
if success:
print("\n🎉 登录功能测试通过!")
else:
print("\n❌ 登录功能测试失败")
return success
except Exception as e:
print(f"\n❌ 测试错误: {str(e)}")
import traceback
traceback.print_exc()
page.screenshot(path='/tmp/login_error_complete.png', full_page=True)
return False
finally:
browser.close()
if __name__ == "__main__":
test_login_complete()