b0f91d74f5
修复前端签名生成中bodyString硬编码问题 添加start-frontend.sh脚本启动前端服务 统一manage-app和gateway的JWT密钥配置 修复Repository扫描路径问题 更新测试配置和依赖 重构表名映射为sys_user和sys_role 完善用户实体类字段映射 添加集成测试配置和测试用例
95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
"""
|
|
E2E登录功能测试
|
|
使用Playwright测试登录流程
|
|
"""
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
import time
|
|
|
|
def test_login():
|
|
"""测试登录功能"""
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
context = browser.new_context()
|
|
page = context.new_page()
|
|
|
|
try:
|
|
print("1. 访问登录页面...")
|
|
page.goto('http://localhost:3002')
|
|
page.wait_for_load_state('networkidle')
|
|
time.sleep(2)
|
|
|
|
print("2. 检查页面标题...")
|
|
title = page.title()
|
|
print(f" 页面标题: {title}")
|
|
|
|
print("3. 截图保存当前页面...")
|
|
page.screenshot(path='/tmp/login_page.png', full_page=True)
|
|
print(" 截图已保存到 /tmp/login_page.png")
|
|
|
|
print("4. 查找登录表单...")
|
|
username_input = page.locator('input[type="text"], input[placeholder*="用户名"], input[placeholder*="账号"]').first
|
|
password_input = page.locator('input[type="password"]').first
|
|
login_button = page.locator('button:has-text("登录"), button:has-text("Login")').first
|
|
|
|
if username_input.count() == 0:
|
|
print(" 未找到用户名输入框,尝试其他选择器...")
|
|
username_input = page.locator('input').nth(0)
|
|
|
|
if password_input.count() == 0:
|
|
print(" 未找到密码输入框,尝试其他选择器...")
|
|
password_input = page.locator('input').nth(1)
|
|
|
|
print("5. 填写登录信息...")
|
|
username_input.fill('admin')
|
|
print(" 用户名: admin")
|
|
|
|
password_input.fill('admin123')
|
|
print(" 密码: admin123")
|
|
|
|
print("6. 点击登录按钮...")
|
|
login_button.click()
|
|
|
|
print("7. 等待登录响应...")
|
|
time.sleep(3)
|
|
page.wait_for_load_state('networkidle')
|
|
|
|
print("8. 检查登录结果...")
|
|
current_url = page.url
|
|
print(f" 当前URL: {current_url}")
|
|
|
|
page.screenshot(path='/tmp/login_result.png', full_page=True)
|
|
print(" 登录结果截图已保存到 /tmp/login_result.png")
|
|
|
|
if 'dashboard' in current_url.lower() or 'home' in current_url.lower():
|
|
print("✅ 登录成功!已跳转到主页")
|
|
return True
|
|
elif 'login' not in current_url.lower():
|
|
print("✅ 登录成功!已跳转离开登录页")
|
|
return True
|
|
else:
|
|
print("❌ 登录可能失败,仍在登录页")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ 测试过程中出现错误: {str(e)}")
|
|
page.screenshot(path='/tmp/login_error.png', full_page=True)
|
|
print(" 错误截图已保存到 /tmp/login_error.png")
|
|
return False
|
|
finally:
|
|
browser.close()
|
|
|
|
if __name__ == "__main__":
|
|
print("=" * 60)
|
|
print("E2E登录功能测试")
|
|
print("=" * 60)
|
|
|
|
success = test_login()
|
|
|
|
print("=" * 60)
|
|
if success:
|
|
print("测试结果: ✅ 通过")
|
|
else:
|
|
print("测试结果: ❌ 失败")
|
|
print("=" * 60)
|