Procházet zdrojové kódy

test: 新增设备分组管理E2E测试用例15条

liaoxg před 3 měsíci
rodič
revize
dda9fe6ea2
1 změnil soubory, kde provedl 210 přidání a 0 odebrání
  1. 210 0
      test-e2e/e2e/device-group.spec.js

+ 210 - 0
test-e2e/e2e/device-group.spec.js

@@ -0,0 +1,210 @@
+const { test, expect } = require('@playwright/test');
+
+const BASE_URL = 'https://ajy.danclub.cn';
+const TEST_ADMIN = { username: 'admin', password: 'admin123' };
+
+test.describe('6.1 设备分组管理', () => {
+  test.beforeEach(async ({ page }) => {
+    await page.goto(BASE_URL);
+    await page.waitForLoadState('networkidle');
+    await page.getByPlaceholder('请输入用户名').fill(TEST_ADMIN.username);
+    await page.getByPlaceholder('请输入密码').fill(TEST_ADMIN.password);
+    await page.getByRole('button', { name: '登 录' }).click();
+    await page.waitForURL(`${BASE_URL}/#/user/app`, { timeout: 10000 });
+  });
+
+  test('DG-001: 查看设备列表(分组视角)', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    await page.waitForTimeout(1000);
+    const tableRows = page.locator('.el-table__body tr');
+    const count = await tableRows.count();
+    expect(count).toBeGreaterThanOrEqual(0);
+  });
+
+  test('DG-002: 按设备类型筛选(家庭设备)', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const typeSelect = page.locator('.el-select').first();
+    if (await typeSelect.isVisible()) {
+      await typeSelect.click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '家庭设备' }).click();
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-003: 按设备类型筛选(公共设备)', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const typeSelect = page.locator('.el-select').first();
+    if (await typeSelect.isVisible()) {
+      await typeSelect.click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '公共设备' }).click();
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-004: 按设备编号精确搜索', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const searchInput = page.getByPlaceholder('请输入设备编号');
+    if (await searchInput.isVisible()) {
+      await searchInput.fill('AJY001');
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-005: 按绑定用户名模糊搜索', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const boundUserInput = page.getByPlaceholder('用户姓名模糊搜索');
+    if (await boundUserInput.isVisible()) {
+      await boundUserInput.fill('张');
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-006: 按在线状态筛选-在线', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const statusSelect = page.locator('.el-select').nth(1);
+    if (await statusSelect.isVisible()) {
+      await statusSelect.click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '在线' }).click();
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-007: 按在线状态筛选-离线', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const statusSelect = page.locator('.el-select').nth(1);
+    if (await statusSelect.isVisible()) {
+      await statusSelect.click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '离线' }).click();
+      await page.getByRole('button', { name: '查询' }).click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-008: 重置查询条件', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    await page.getByRole('button', { name: '重置' }).click();
+    await page.waitForTimeout(1000);
+    const searchInput = page.getByPlaceholder('请输入设备编号');
+    await expect(searchInput).toHaveValue('');
+  });
+
+  test('DG-009: 分页切换', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const nextButton = page.locator('.btn-next').first();
+    if (await nextButton.isVisible()) {
+      await nextButton.click();
+      await page.waitForTimeout(1000);
+    }
+  });
+
+  test('DG-010: 新增设备-家庭设备', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const addBtn = page.getByRole('button', { name: '新增' });
+    if (await addBtn.isVisible()) {
+      await addBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByPlaceholder('请输入设备编号(如:AJY001)').fill('TEST' + Date.now());
+      await page.getByPlaceholder('请输入设备名称').fill('测试设备');
+      await page.locator('.el-select').nth(0).click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: 'AJY-2026' }).click();
+      await page.locator('.el-select').nth(1).click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '家庭设备' }).click();
+      await page.getByPlaceholder('请输入设备序列号').fill('SN' + Date.now());
+      await page.getByPlaceholder('请输入固件版本(如:v1.2.0)').fill('v1.2.0');
+      await page.waitForTimeout(300);
+    }
+  });
+
+  test('DG-011: 新增设备-公共设备', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const addBtn = page.getByRole('button', { name: '新增' });
+    if (await addBtn.isVisible()) {
+      await addBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByPlaceholder('请输入设备编号(如:AJY001)').fill('PUB' + Date.now());
+      await page.getByPlaceholder('请输入设备名称').fill('公共设备测试');
+      await page.locator('.el-select').nth(0).click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: 'AJY-2026' }).click();
+      await page.locator('.el-select').nth(1).click();
+      await page.waitForTimeout(300);
+      await page.getByRole('option', { name: '公共设备' }).click();
+      await page.getByPlaceholder('请输入设备序列号').fill('SN' + Date.now());
+      await page.getByPlaceholder('请输入固件版本(如:v1.2.0)').fill('v1.2.0');
+      await page.waitForTimeout(300);
+    }
+  });
+
+  test('DG-012: 设备编号必填验证', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const addBtn = page.getByRole('button', { name: '新增' });
+    if (await addBtn.isVisible()) {
+      await addBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByRole('button', { name: '保存' }).click();
+      await page.waitForTimeout(500);
+    }
+  });
+
+  test('DG-013: 设备型号必填验证', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const addBtn = page.getByRole('button', { name: '新增' });
+    if (await addBtn.isVisible()) {
+      await addBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByPlaceholder('请输入设备编号(如:AJY001)').fill('TEST' + Date.now());
+      await page.getByPlaceholder('请输入设备名称').fill('测试设备');
+      await page.getByRole('button', { name: '保存' }).click();
+      await page.waitForTimeout(500);
+    }
+  });
+
+  test('DG-014: 查看设备详情', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const viewBtn = page.getByRole('button', { name: '查看' }).first();
+    if (await viewBtn.isVisible()) {
+      await viewBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByRole('button', { name: '关闭' }).click();
+      await page.waitForTimeout(300);
+    }
+  });
+
+  test('DG-015: 编辑设备信息', async ({ page }) => {
+    await page.goto(`${BASE_URL}/#/device`);
+    await page.waitForLoadState('networkidle');
+    const editBtn = page.getByRole('button', { name: '编辑' }).first();
+    if (await editBtn.isVisible()) {
+      await editBtn.click();
+      await page.waitForTimeout(500);
+      await page.getByPlaceholder('请输入设备名称').clear();
+      await page.getByPlaceholder('请输入设备名称').fill('测试设备-已编辑');
+      await page.waitForTimeout(300);
+    }
+  });
+});