| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- const { test, expect } = require('@playwright/test');
- const BASE_URL = 'http://localhost:3000';
- const TEST_ADMIN = { username: 'admin', password: 'admin123' };
- test.describe('登录模块', () => {
- test('TC-001: 正常登录', async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.waitForLoadState('networkidle');
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-002: 用户名为空验证', async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await expect(page.locator('text=请输入用户名')).toBeVisible();
- });
- test('TC-003: 密码为空验证', async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.click('button:has-text("登 录")');
- await expect(page.locator('text=请输入密码')).toBeVisible();
- });
- test('TC-004: 错误账号登录', async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', 'wronguser');
- await page.fill('input[type="password"]', 'wrongpass');
- await page.click('button:has-text("登 录")');
- await page.waitForTimeout(2000);
- });
- });
- test.describe('用户管理模块', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-010: 查看用户列表', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=用户列表')).toBeVisible();
- });
- test('TC-011: 手机号格式验证', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.fill('input[placeholder="请输入姓名"]', '测试用户');
- await page.fill('input[placeholder="请输入手机号"]', '12345');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=手机号格式错误')).toBeVisible();
- });
- test('TC-012: 肩宽范围验证-男性', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.fill('input[placeholder="请输入姓名"]', '测试用户');
- await page.click('.el-select:has-text("请选择性别")');
- await page.click('li:has-text("男")');
- await page.fill('input[placeholder="请输入肩宽(cm)"]', '35');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=男性肩宽范围为36-52cm')).toBeVisible();
- });
- test('TC-012B: 肩宽范围验证-女性', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.fill('input[placeholder="请输入姓名"]', '测试用户');
- await page.click('.el-select:has-text("请选择性别")');
- await page.click('li:has-text("女")');
- await page.fill('input[placeholder="请输入肩宽(cm)"]', '50');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=女性肩宽范围为32-46cm')).toBeVisible();
- });
- test('TC-013: 姓名必填验证', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=姓名为必填项')).toBeVisible();
- });
- test('TC-014: 手机号必填验证', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.fill('input[placeholder="请输入姓名"]', '测试用户');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=手机号为必填项')).toBeVisible();
- });
- test('TC-015: 年龄范围验证', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增用户")');
- await page.fill('input[placeholder="请输入姓名"]', '测试用户');
- await page.fill('input[placeholder="请输入手机号"]', '13900000000');
- await page.fill('input[placeholder="请输入年龄"]', '150');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=年龄范围')).toBeVisible();
- });
- test('TC-016: 编辑用户', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("编辑") >> nth=0');
- await page.waitForTimeout(500);
- await expect(page.locator('text=编辑用户')).toBeVisible();
- });
- test('TC-017: 删除用户-取消', async ({ page }) => {
- await page.click('text=用户管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("删除") >> nth=0');
- await page.waitForTimeout(500);
- await page.click('button:has-text("取 消")');
- await expect(page.locator('text=用户列表')).toBeVisible();
- });
- });
- test.describe('穴位管理模块', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-020: 查看穴位列表', async ({ page }) => {
- await page.click('text=穴位管理');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=穴位列表')).toBeVisible();
- });
- test('TC-021: 新增穴位-名称必填验证', async ({ page }) => {
- await page.click('text=穴位管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增穴位")');
- await page.waitForTimeout(500);
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=穴位名称为必填项')).toBeVisible();
- });
- });
- test.describe('方案管理模块', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-030: 查看方案列表', async ({ page }) => {
- await page.click('text=方案管理');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=方案列表')).toBeVisible();
- });
- test('TC-031: 新增方案-名称必填验证', async ({ page }) => {
- await page.click('text=方案管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增方案")');
- await page.waitForTimeout(500);
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=方案名称为必填项')).toBeVisible();
- });
- test('TC-032: 查看方案详情', async ({ page }) => {
- await page.click('text=方案管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("查看") >> nth=0');
- await page.waitForTimeout(500);
- await expect(page.locator('text=方案详情')).toBeVisible();
- });
- test('TC-033: 编辑方案', async ({ page }) => {
- await page.click('text=方案管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("编辑") >> nth=0');
- await page.waitForTimeout(500);
- await expect(page.locator('text=编辑方案')).toBeVisible();
- });
- });
- test.describe('设备管理模块', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-040: 查看设备列表', async ({ page }) => {
- await page.click('text=设备管理');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=设备列表')).toBeVisible();
- });
- test('TC-041: 新增设备-编号必填验证', async ({ page }) => {
- await page.click('text=设备管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增设备")');
- await page.waitForTimeout(500);
- await page.fill('input[placeholder="请输入设备名称"]', '测试设备');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=设备编号为必填项')).toBeVisible();
- });
- test('TC-042: 查看设备详情', async ({ page }) => {
- await page.click('text=设备管理');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("查看") >> nth=0');
- await page.waitForTimeout(500);
- await expect(page.locator('text=设备详情')).toBeVisible();
- });
- });
- test.describe('系统管理模块', () => {
- test.beforeEach(async ({ page }) => {
- await page.goto(`${BASE_URL}/#/login`);
- await page.fill('input[placeholder="请输入用户名"]', TEST_ADMIN.username);
- await page.fill('input[type="password"]', TEST_ADMIN.password);
- await page.click('button:has-text("登 录")');
- await page.waitForURL(`${BASE_URL}/#/**`, { timeout: 10000 });
- });
- test('TC-050: 查看管理员列表', async ({ page }) => {
- await page.click('text=系统管理');
- await page.click('text=管理员');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=管理员列表')).toBeVisible();
- });
- test('TC-051: 查看操作日志', async ({ page }) => {
- await page.click('text=系统管理');
- await page.click('text=系统日志');
- await page.waitForTimeout(1000);
- await expect(page.locator('text=操作日志')).toBeVisible();
- });
- test('TC-052: 新增管理员-用户名必填验证', async ({ page }) => {
- await page.click('text=系统管理');
- await page.click('text=管理员');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增管理员")');
- await page.waitForTimeout(500);
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=用户名为必填项')).toBeVisible();
- });
- test('TC-053: 新增管理员-密码格式验证', async ({ page }) => {
- await page.click('text=系统管理');
- await page.click('text=管理员');
- await page.waitForTimeout(1000);
- await page.click('button:has-text("新增管理员")');
- await page.waitForTimeout(500);
- await page.fill('input[placeholder="请输入用户名"]', 'testadmin');
- await page.fill('input[placeholder="请输入密码"]', '123');
- await page.click('button:has-text("确 定")');
- await expect(page.locator('text=密码需8-20字符')).toBeVisible();
- });
- });
|