| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- import { test, expect } from '../../utils/test-setup';
- /**
- * 企业小程序登录 E2E 测试
- *
- * 测试企业用户通过小程序登录的功能,验证:
- * - 登录失败场景
- * - 表单验证
- *
- * 注意:
- * - 登录成功、Token 持久性、退出登录等测试需要预创建测试用户
- * - 这些测试需要在独立测试套件中运行,使用专用的 page context
- * - 当前测试文件专注于不需要用户创建的测试场景
- *
- * @see {@link ../pages/mini/enterprise-mini.page.ts} EnterpriseMiniPage
- */
- test.describe('企业小程序登录功能', () => {
- test.describe('表单验证测试 (AC3)', () => {
- test('手机号为空时应该显示错误提示', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 不填写任何信息,直接点击登录按钮
- await enterpriseMiniPage.clickLoginButton();
- // 验证仍然在登录页面(未跳转)
- const currentUrl = enterpriseMiniPage.page.url();
- expect(currentUrl).toContain('/mini');
- // 验证登录页面容器仍然可见
- await expect(enterpriseMiniPage.loginPage).toBeVisible();
- });
- test('密码为空时应该显示错误提示', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 只填写手机号,不填写密码
- await enterpriseMiniPage.fillPhone('13800138000');
- // 尝试点击登录按钮
- await enterpriseMiniPage.clickLoginButton();
- // 验证仍然在登录页面(未跳转)
- const currentUrl = enterpriseMiniPage.page.url();
- expect(currentUrl).toContain('/mini');
- // 验证登录页面容器仍然可见
- await expect(enterpriseMiniPage.loginPage).toBeVisible();
- });
- test('表单验证错误提示应该清晰可见', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 不填写任何信息,直接点击登录
- await enterpriseMiniPage.clickLoginButton();
- // 验证仍在登录页面
- expect(enterpriseMiniPage.page.url()).toContain('/mini');
- // 验证登录页面容器仍然可见
- await expect(enterpriseMiniPage.loginPage).toBeVisible();
- });
- });
- test.describe('登录失败测试 (AC2)', () => {
- test('使用不存在的用户名登录失败', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 使用不存在的用户名尝试登录(使用有效的手机号格式)
- const fakeUsername = `199${Date.now().toString().slice(-8)}`; // 11位数字,符合手机号格式
- await enterpriseMiniPage.login(fakeUsername, 'password123');
- // 验证显示错误提示
- await enterpriseMiniPage.expectLoginError('用户名或密码错误');
- // 验证未存储 token
- const token = await enterpriseMiniPage.getToken();
- expect(token).toBeNull();
- });
- test('使用错误的密码登录失败', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 使用不存在的用户尝试登录(使用有效的手机号格式)
- await enterpriseMiniPage.login('19912345678', 'wrongpassword');
- // 验证显示错误提示
- await enterpriseMiniPage.expectLoginError('用户名或密码错误');
- // 验证未存储 token
- const token = await enterpriseMiniPage.getToken();
- expect(token).toBeNull();
- });
- test('错误提示内容应该正确', async ({ enterpriseMiniPage }) => {
- // 导航到登录页面
- await enterpriseMiniPage.goto();
- // 使用错误的凭据尝试登录(使用有效的手机号格式)
- await enterpriseMiniPage.login('19987654321', 'wrongpassword');
- // 验证错误提示包含"用户名或密码错误"或类似内容
- await enterpriseMiniPage.expectLoginError();
- });
- });
- test.describe.skip('基本登录成功测试 (AC1) - 需要预创建测试用户', () => {
- // 这些测试需要预创建的测试用户
- // 应该在独立的测试套件中运行,使用专用的 page context
- test('应该成功登录企业小程序', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- // 1. 在独立测试套件中创建测试用户
- // 2. 使用该用户登录小程序
- // 3. 验证登录成功
- });
- test('登录成功后应该显示用户信息', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- test('登录成功后 token 应该正确存储', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- });
- test.describe.skip('Token 持久性测试 (AC4) - 需要预创建测试用户', () => {
- // 这些测试需要预创建的测试用户
- test('页面刷新后 token 仍然有效', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- test('使用已存储 token 可以继续访问', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- });
- test.describe.skip('退出登录测试 (AC5) - 需要预创建测试用户', () => {
- // 这些测试需要预创建的测试用户
- test('应该成功退出登录', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- test('退出后 token 应该被清除', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- test('退出后无法访问需要认证的页面', async ({ enterpriseMiniPage: _enterpriseMiniPage }) => {
- // TODO: 需要预创建测试用户
- });
- });
- });
|