1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { mockLogoutSuccess } from '../../support/mock/handlers/user';
- import LoginPage from '../../support/pageObjects/LoginPage';
- import MainPage from '../../support/pageObjects/MainPage';
- import ExitModalPage from '../../support/pageObjects/ExitModalPage';
- describe('User Logout', () => {
- const loginPage = new LoginPage();
- const mainPage = new MainPage();
- const exitModalPage = new ExitModalPage();
- beforeEach(() => {
- // 使用封装的登录并初始化命令
- cy.loginAndInitialize();
- });
- it('should successfully logout and return to login page', () => {
- mockLogoutSuccess();
-
- // 使用 Page Object 点击退出按钮
- mainPage.clickExitButton();
-
- // 验证 modal 可见
- exitModalPage.shouldBeVisible();
-
- // 点击"注销用户"按钮
- exitModalPage.clickLogout();
-
- // 应该显示成功消息
- cy.contains('已退出登录').should('be.visible');
-
- // 应该返回登录页面
- loginPage.getUsernameInput().should('be.visible');
- loginPage.getPasswordInput().should('be.visible');
- });
- it('should clear user state after logout', () => {
- mockLogoutSuccess();
-
- // 使用 Page Object 执行登出
- mainPage.clickExitButton();
- exitModalPage.shouldBeVisible();
- exitModalPage.clickLogout();
-
- // 验证 Redux store 中用户信息已清除
- cy.window().its('store').invoke('getState')
- .its('userInfo')
- .should('deep.equal', {
- token: '',
- expire: 0,
- uid: 0,
- name: '',
- avatar: ''
- });
- });
- it('should close exit modal when clicking cancel', () => {
- // 使用 Page Object 打开退出 modal
- mainPage.clickExitButton();
- exitModalPage.shouldBeVisible();
-
- // 点击取消按钮
- exitModalPage.clickCancel();
-
- // modal 应该关闭
- exitModalPage.shouldNotBeVisible();
- });
- it('should not call backend logout API (placeholder)', () => {
- // 由于后端 API 尚未实现,此测试验证不会调用实际的后端接口
- // 当前是纯前端状态清除
-
- // 使用 Page Object 执行登出
- mainPage.clickExitButton();
- exitModalPage.shouldBeVisible();
- exitModalPage.clickLogout();
-
- // 验证成功消息
- cy.contains('已退出登录').should('be.visible');
-
- // 验证返回登录页
- loginPage.getUsernameInput().should('be.visible');
- });
- });
|