logout.spec.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { test, expect } from '../utils/test-setup';
  2. import testUsers from '../../fixtures/test-users.json';
  3. test.describe('用户登出流程', () => {
  4. test.beforeEach(async ({ loginPage }) => {
  5. await loginPage.goto();
  6. await loginPage.login(testUsers.admin.username, testUsers.admin.password);
  7. });
  8. test('成功登出', async ({ page }) => {
  9. // 点击用户菜单(需要根据实际UI调整选择器)
  10. const userMenu = page.locator('[data-testid="user-menu"]');
  11. await userMenu.click();
  12. // 点击登出按钮
  13. const logoutButton = page.getByRole('button', { name: '登出' });
  14. await logoutButton.click();
  15. // 验证重定向到登录页面
  16. await expect(page).toHaveURL('/login');
  17. await expect(page.getByText('欢迎回来')).toBeVisible();
  18. });
  19. test('登出后无法访问受保护页面', async ({ page }) => {
  20. // 先登出
  21. const userMenu = page.locator('[data-testid="user-menu"]');
  22. await userMenu.click();
  23. const logoutButton = page.getByRole('button', { name: '登出' });
  24. await logoutButton.click();
  25. // 尝试访问受保护页面
  26. await page.goto('/dashboard');
  27. // 应该被重定向到登录页面
  28. await expect(page).toHaveURL(/\/login/);
  29. });
  30. });