import { test, expect } from '../utils/test-setup'; import testUsers from '../../fixtures/test-users.json'; test.describe('用户个人资料管理', () => { test.beforeEach(async ({ loginPage }) => { await loginPage.goto(); await loginPage.login(testUsers.admin.username, testUsers.admin.password); }); test('查看个人资料页面', async ({ page }) => { // 导航到个人资料页面(需要根据实际路由调整) await page.goto('/profile'); await page.waitForLoadState('networkidle'); // 验证页面标题和基本信息 await expect(page.getByRole('heading', { name: '个人资料' })).toBeVisible(); await expect(page.getByText(testUsers.admin.username)).toBeVisible(); }); test('更新个人资料信息', async ({ page }) => { await page.goto('/profile'); await page.waitForLoadState('networkidle'); // 点击编辑按钮 const editButton = page.getByRole('button', { name: '编辑资料' }); await editButton.click(); // 更新昵称 const nicknameInput = page.getByLabel('昵称'); const newNickname = `测试昵称_${Date.now()}`; await nicknameInput.fill(newNickname); // 保存更改 const saveButton = page.getByRole('button', { name: '保存' }); await saveButton.click(); // 验证更新成功 await expect(page.locator('text=资料更新成功')).toBeVisible(); await expect(page.getByText(newNickname)).toBeVisible(); }); test('修改密码', async ({ page }) => { await page.goto('/profile'); await page.waitForLoadState('networkidle'); // 导航到修改密码页面 const changePasswordTab = page.getByRole('tab', { name: '修改密码' }); await changePasswordTab.click(); // 填写密码表单 const currentPasswordInput = page.getByLabel('当前密码'); const newPasswordInput = page.getByLabel('新密码'); const confirmPasswordInput = page.getByLabel('确认新密码'); await currentPasswordInput.fill(testUsers.admin.password); await newPasswordInput.fill('NewPassword123!'); await confirmPasswordInput.fill('NewPassword123!'); // 提交修改 const submitButton = page.getByRole('button', { name: '修改密码' }); await submitButton.click(); // 验证密码修改成功 await expect(page.locator('text=密码修改成功')).toBeVisible(); // 使用新密码重新登录验证 const logoutButton = page.getByRole('button', { name: '登出' }); await logoutButton.click(); await page.goto('/login'); await page.getByPlaceholder('请输入用户名').fill(testUsers.admin.username); await page.getByPlaceholder('请输入密码').fill('NewPassword123!'); await page.getByRole('button', { name: '登录' }).click(); // 验证登录成功 await expect(page).toHaveURL('/'); }); test('密码修改验证 - 当前密码错误', async ({ page }) => { await page.goto('/profile'); await page.waitForLoadState('networkidle'); const changePasswordTab = page.getByRole('tab', { name: '修改密码' }); await changePasswordTab.click(); const currentPasswordInput = page.getByLabel('当前密码'); const newPasswordInput = page.getByLabel('新密码'); const confirmPasswordInput = page.getByLabel('确认新密码'); await currentPasswordInput.fill('wrongpassword'); await newPasswordInput.fill('NewPassword123!'); await confirmPasswordInput.fill('NewPassword123!'); const submitButton = page.getByRole('button', { name: '修改密码' }); await submitButton.click(); // 验证错误提示 await expect(page.locator('text=当前密码错误')).toBeVisible(); }); test('密码修改验证 - 新密码不一致', async ({ page }) => { await page.goto('/profile'); await page.waitForLoadState('networkidle'); const changePasswordTab = page.getByRole('tab', { name: '修改密码' }); await changePasswordTab.click(); const currentPasswordInput = page.getByLabel('当前密码'); const newPasswordInput = page.getByLabel('新密码'); const confirmPasswordInput = page.getByLabel('确认新密码'); await currentPasswordInput.fill(testUsers.admin.password); await newPasswordInput.fill('NewPassword123!'); await confirmPasswordInput.fill('DifferentPassword123!'); const submitButton = page.getByRole('button', { name: '修改密码' }); await submitButton.click(); // 验证错误提示 await expect(page.locator('text=两次密码输入不一致')).toBeVisible(); }); test('查看登录历史', async ({ page }) => { await page.goto('/profile'); await page.waitForLoadState('networkidle'); // 导航到安全设置页面 const securityTab = page.getByRole('tab', { name: '安全设置' }); await securityTab.click(); // 验证登录历史记录可见 await expect(page.getByText('登录历史')).toBeVisible(); await expect(page.getByText('最近登录')).toBeVisible(); }); });