device-edge.spec.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const { test, expect } = require('@playwright/test');
  2. const BASE_URL = 'https://ajy.danclub.cn';
  3. const TEST_ADMIN = { username: 'admin', password: 'admin123' };
  4. test.describe('设备绑定异常与边界', () => {
  5. test.beforeEach(async ({ page }) => {
  6. await page.goto(BASE_URL);
  7. await page.waitForLoadState('networkidle');
  8. await page.getByPlaceholder('请输入用户名').fill(TEST_ADMIN.username);
  9. await page.getByPlaceholder('请输入密码').fill(TEST_ADMIN.password);
  10. await page.getByRole('button', { name: '登 录' }).click();
  11. await page.waitForURL(`${BASE_URL}/#/user/app`, { timeout: 10000 });
  12. });
  13. test('DE-001: 设备编号不存在时绑定', async ({ page }) => {
  14. await page.goto(`${BASE_URL}/#/device/users?deviceId=99999`);
  15. await page.waitForLoadState('networkidle');
  16. await page.waitForTimeout(1000);
  17. });
  18. test('DE-002: 设备编号为空绑定', async ({ page }) => {
  19. await page.goto(`${BASE_URL}/#/device`);
  20. await page.waitForLoadState('networkidle');
  21. });
  22. test('DE-003: 设备编号重复注册', async ({ page }) => {
  23. await page.goto(`${BASE_URL}/#/device`);
  24. await page.waitForLoadState('networkidle');
  25. const addBtn = page.getByRole('button', { name: '新增' });
  26. if (await addBtn.isVisible()) {
  27. await addBtn.click();
  28. await page.waitForTimeout(500);
  29. await page.getByPlaceholder('请输入设备编号(如:AJY001)').fill('AJY001');
  30. await page.waitForTimeout(300);
  31. }
  32. });
  33. test('DE-004: 设备编号含特殊字符', async ({ page }) => {
  34. await page.goto(`${BASE_URL}/#/device`);
  35. await page.waitForLoadState('networkidle');
  36. const addBtn = page.getByRole('button', { name: '新增' });
  37. if (await addBtn.isVisible()) {
  38. await addBtn.click();
  39. await page.waitForTimeout(500);
  40. await page.getByPlaceholder('请输入设备编号(如:AJY001)').fill('AJY-001');
  41. await page.getByPlaceholder('请输入设备名称').fill('测试设备');
  42. await page.waitForTimeout(300);
  43. }
  44. });
  45. test('DE-005: 固件版本格式验证', async ({ page }) => {
  46. await page.goto(`${BASE_URL}/#/device`);
  47. await page.waitForLoadState('networkidle');
  48. const addBtn = page.getByRole('button', { name: '新增' });
  49. if (await addBtn.isVisible()) {
  50. await addBtn.click();
  51. await page.waitForTimeout(500);
  52. await page.getByPlaceholder('请输入固件版本(如:v1.2.0)').fill('invalid');
  53. await page.waitForTimeout(300);
  54. }
  55. });
  56. test('DE-006: 删除已绑定用户的设备', async ({ page }) => {
  57. await page.goto(`${BASE_URL}/#/device`);
  58. await page.waitForLoadState('networkidle');
  59. const deleteBtn = page.getByRole('button', { name: '删除' }).first();
  60. if (await deleteBtn.isVisible()) {
  61. await deleteBtn.click();
  62. await page.waitForTimeout(500);
  63. await page.getByRole('button', { name: '取消' }).click();
  64. await page.waitForTimeout(300);
  65. }
  66. });
  67. test('DE-007: 批量删除设备数量边界', async ({ page }) => {
  68. await page.goto(`${BASE_URL}/#/device`);
  69. await page.waitForLoadState('networkidle');
  70. const checkbox = page.locator('.el-table__header .el-checkbox').first();
  71. if (await checkbox.isVisible()) {
  72. await checkbox.click();
  73. await page.waitForTimeout(300);
  74. }
  75. });
  76. test('DE-008: 设备类型切换影响', async ({ page }) => {
  77. await page.goto(`${BASE_URL}/#/device`);
  78. await page.waitForLoadState('networkidle');
  79. });
  80. test('DE-009: 分页-每页50条', async ({ page }) => {
  81. await page.goto(`${BASE_URL}/#/device`);
  82. await page.waitForLoadState('networkidle');
  83. const pageSizeSelect = page.locator('.el-select').last();
  84. if (await pageSizeSelect.isVisible()) {
  85. await pageSizeSelect.click();
  86. await page.waitForTimeout(300);
  87. }
  88. });
  89. test('DE-010: 设备列表导出Excel', async ({ page }) => {
  90. await page.goto(`${BASE_URL}/#/device`);
  91. await page.waitForLoadState('networkidle');
  92. await page.waitForTimeout(1000);
  93. });
  94. });