| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- 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);
- }
- });
- });
|