12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * 测试文件: 阶段1-登录与注册
- * 路径: 路径1-正常登录
- *
- * 路径分析:
- * - POM: LoginPage, MainPage
- * - Mock: mockLoginSuccess()
- * - 规格:
- * ✓ 用户名输入框可见
- * ✓ 密码输入框可见
- * ✓ 登录按钮可见
- * ✓ 登录成功提示显示
- * ✓ 跳转到主界面
- * - 需要新建: 无
- * - 需要添加: 无
- * - 已有的data-testid:
- * - login-username-input - 用户名输入框
- * - login-password-input - 密码输入框
- * - login-submit-button - 登录按钮
- * - patient_management, register, worklist - MainPage导航按钮
- */
- import { mockLoginSuccess } from '../../support/mock/handlers/user';
- import LoginPage from '../../support/pageObjects/LoginPage';
- import MainPage from '../../support/pageObjects/MainPage';
- describe('阶段1:登录与注册 - 路径1:正常登录', () => {
- const loginPage = new LoginPage();
- const mainPage = new MainPage();
- beforeEach(() => {
- // 设置Mock API
- mockLoginSuccess();
- });
- it('应该成功登录并进入主界面', () => {
- /**
- * Given: 用户在登录页面
- * 步骤1: 打开登录界面
- */
- loginPage.visit();
-
- // 验证登录页面元素可见
- // 步骤2-4的前置条件:验证输入框和按钮可见
- loginPage.getUsernameInput().should('be.visible');
- loginPage.getPasswordInput().should('be.visible');
- loginPage.getSubmitButton().should('be.visible');
- /**
- * When: 用户输入正确的账号密码并点击登录
- * 步骤2: 输入账号
- * 步骤3: 输入密码
- * 步骤4: 点击登录
- */
- loginPage.login('admin', '123456');
- /**
- * Then: 系统验证账号密码
- * 步骤5: 系统验证账号密码
- */
- // 等待登录API响应
- cy.wait('@loginSuccess').then((interception) => {
- // 验证API响应
- expect(interception.response?.statusCode).to.eq(200);
- expect(interception.response?.body.code).to.eq('0x000000');
- expect(interception.response?.body.data.name).to.eq('admin');
- });
- /**
- * Then: 登录成功,显示成功提示,进入主界面
- * 步骤6: 登录成功 → 进入主界面
- */
- // 验证登录成功提示显示
- cy.contains('登录成功').should('be.visible', { timeout: 10000 });
-
- // 验证进入主界面 - 患者管理按钮可见
- cy.get('[data-testid="patient_management"]').should('be.visible');
- });
- });
|