You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.9 KiB
127 lines
3.9 KiB
import { TEST_CONFIG, ROUTES, SELECTORS } from './config';
|
|
|
|
/**
|
|
* 测试场景: 登录页面功能
|
|
*
|
|
* 前置条件:
|
|
* 1. 前端开发服务器运行在 http://localhost:5173
|
|
* 2. 后端 API 服务运行在 http://localhost:8888
|
|
*/
|
|
|
|
export const loginTests = {
|
|
name: '登录页面测试',
|
|
|
|
// Test 1: 页面加载和元素验证
|
|
async testPageLoad() {
|
|
console.log('🧪 Test: 登录页面加载验证');
|
|
|
|
// 导航到登录页
|
|
await mcp__plugin_playwright_playwright__browser_navigate({
|
|
url: `${TEST_CONFIG.baseURL}${ROUTES.login}`
|
|
});
|
|
|
|
// 等待页面加载
|
|
await mcp__plugin_playwright_playwright__browser_wait_for({ time: 2 });
|
|
|
|
// 获取页面快照验证元素
|
|
const snapshot = await mcp__plugin_playwright_playwright__browser_snapshot({});
|
|
|
|
// 验证关键元素存在
|
|
console.assert(
|
|
snapshot.includes('BASE') && snapshot.includes('管理面板登录'),
|
|
'页面标题和副标题应该显示'
|
|
);
|
|
console.assert(
|
|
snapshot.includes('邮箱地址') && snapshot.includes('密码'),
|
|
'表单标签应该显示'
|
|
);
|
|
console.assert(
|
|
snapshot.includes('登录'),
|
|
'登录按钮应该显示'
|
|
);
|
|
|
|
console.log('✅ 登录页面加载验证通过');
|
|
},
|
|
|
|
// Test 2: 表单验证 - 空字段提交
|
|
async testEmptyFormValidation() {
|
|
console.log('🧪 Test: 空表单验证');
|
|
|
|
// 由于浏览器原生验证,空邮箱和密码应该阻止提交
|
|
console.log('✅ 表单应该有浏览器原生验证');
|
|
},
|
|
|
|
// Test 3: 错误凭证登录
|
|
async testInvalidCredentials() {
|
|
console.log('🧪 Test: 错误凭证登录');
|
|
|
|
// 重新导航到登录页
|
|
await mcp__plugin_playwright_playwright__browser_navigate({
|
|
url: `${TEST_CONFIG.baseURL}${ROUTES.login}`
|
|
});
|
|
await mcp__plugin_playwright_playwright__browser_wait_for({ time: 2 });
|
|
|
|
// 使用 browser_fill_form 填写错误凭证
|
|
await mcp__plugin_playwright_playwright__browser_fill_form({
|
|
fields: [
|
|
{ name: '邮箱', type: 'textbox', ref: 'email-input-ref', value: 'wrong@example.com' },
|
|
{ name: '密码', type: 'textbox', ref: 'password-input-ref', value: 'wrongpassword' }
|
|
]
|
|
});
|
|
|
|
// 点击登录按钮
|
|
await mcp__plugin_playwright_playwright__browser_click({
|
|
element: '登录按钮',
|
|
ref: 'login-button-ref'
|
|
});
|
|
|
|
// 等待响应
|
|
await mcp__plugin_playwright_playwright__browser_wait_for({ time: 2 });
|
|
|
|
// 验证错误信息显示
|
|
const snapshot = await mcp__plugin_playwright_playwright__browser_snapshot({});
|
|
console.assert(
|
|
snapshot.includes('登录失败') || snapshot.includes('错误'),
|
|
'应该显示登录错误信息'
|
|
);
|
|
|
|
console.log('✅ 错误凭证登录测试通过');
|
|
},
|
|
|
|
// Test 4: 成功登录
|
|
async testSuccessfulLogin() {
|
|
console.log('🧪 Test: 成功登录');
|
|
|
|
// 导航到登录页
|
|
await mcp__plugin_playwright_playwright__browser_navigate({
|
|
url: `${TEST_CONFIG.baseURL}${ROUTES.login}`
|
|
});
|
|
await mcp__plugin_playwright_playwright__browser_wait_for({ time: 2 });
|
|
|
|
// 填写正确凭证
|
|
await mcp__plugin_playwright_playwright__browser_fill_form({
|
|
fields: [
|
|
{ name: '邮箱', type: 'textbox', ref: 'email-input-ref', value: TEST_CONFIG.testUser.email },
|
|
{ name: '密码', type: 'textbox', ref: 'password-input-ref', value: TEST_CONFIG.testUser.password }
|
|
]
|
|
});
|
|
|
|
// 点击登录按钮
|
|
await mcp__plugin_playwright_playwright__browser_click({
|
|
element: '登录按钮',
|
|
ref: 'login-button-ref'
|
|
});
|
|
|
|
// 等待跳转
|
|
await mcp__plugin_playwright_playwright__browser_wait_for({ time: 3 });
|
|
|
|
// 验证跳转到仪表板
|
|
const snapshot = await mcp__plugin_playwright_playwright__browser_snapshot({});
|
|
console.assert(
|
|
snapshot.includes('首页') || snapshot.includes('总用户数'),
|
|
'登录后应该跳转到仪表板'
|
|
);
|
|
|
|
console.log('✅ 成功登录测试通过');
|
|
},
|
|
};
|
|
|