camera.spec.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { test, expect } from '@playwright/test'
  2. test.describe('Camera Management E2E Tests', () => {
  3. const username = process.env.TEST_USERNAME || 'admin'
  4. const password = process.env.TEST_PASSWORD || '123456'
  5. async function login(page: any) {
  6. await page.goto('/login')
  7. await page.getByPlaceholder('请输入用户名').fill(username)
  8. await page.getByPlaceholder('请输入密码').fill(password)
  9. await page.getByRole('button', { name: '登 录' }).click()
  10. await expect(page).not.toHaveURL(/\/login/, { timeout: 10000 })
  11. }
  12. test.describe('Camera List Page', () => {
  13. test.skip('should display camera management page', async ({ page }) => {
  14. await login(page)
  15. await page.goto('/camera')
  16. await expect(page.getByRole('button', { name: '新增摄像头' })).toBeVisible()
  17. await expect(page.getByRole('button', { name: '刷新列表' })).toBeVisible()
  18. await expect(page.locator('.el-table')).toBeVisible()
  19. })
  20. test.skip('should have correct table columns', async ({ page }) => {
  21. await login(page)
  22. await page.goto('/camera')
  23. await expect(page.getByText('摄像头ID')).toBeVisible()
  24. await expect(page.getByText('名称')).toBeVisible()
  25. await expect(page.getByText('IP地址')).toBeVisible()
  26. await expect(page.getByText('所属机器')).toBeVisible()
  27. await expect(page.getByText('状态')).toBeVisible()
  28. })
  29. test.skip('should have machine filter', async ({ page }) => {
  30. await login(page)
  31. await page.goto('/camera')
  32. await expect(page.getByPlaceholder('请选择机器')).toBeVisible()
  33. })
  34. })
  35. test.describe('Add Camera Dialog', () => {
  36. test.skip('should open add dialog when clicking add button', async ({ page }) => {
  37. await login(page)
  38. await page.goto('/camera')
  39. await page.getByRole('button', { name: '新增摄像头' }).click()
  40. await expect(page.getByRole('dialog')).toBeVisible()
  41. await expect(page.getByText('新增摄像头')).toBeVisible()
  42. await expect(page.getByPlaceholder('请输入摄像头ID')).toBeVisible()
  43. await expect(page.getByPlaceholder('请输入IP地址')).toBeVisible()
  44. })
  45. test.skip('should validate required fields', async ({ page }) => {
  46. await login(page)
  47. await page.goto('/camera')
  48. await page.getByRole('button', { name: '新增摄像头' }).click()
  49. await page.getByRole('dialog').getByRole('button', { name: '确定' }).click()
  50. await expect(page.getByText('请输入摄像头ID')).toBeVisible()
  51. await expect(page.getByText('请输入名称')).toBeVisible()
  52. await expect(page.getByText('请输入IP地址')).toBeVisible()
  53. })
  54. test.skip('should validate IP address format', async ({ page }) => {
  55. await login(page)
  56. await page.goto('/camera')
  57. await page.getByRole('button', { name: '新增摄像头' }).click()
  58. await page.getByPlaceholder('请输入IP地址').fill('invalid-ip')
  59. await page.getByPlaceholder('请输入IP地址').blur()
  60. await expect(page.getByText('请输入正确的IP地址')).toBeVisible()
  61. })
  62. })
  63. test.describe('Navigation', () => {
  64. test.skip('should have camera menu item in sidebar', async ({ page }) => {
  65. await login(page)
  66. await expect(page.getByText('摄像头管理')).toBeVisible()
  67. })
  68. test.skip('should navigate to camera page from sidebar', async ({ page }) => {
  69. await login(page)
  70. await page.getByText('摄像头管理').click()
  71. await expect(page).toHaveURL(/\/camera/)
  72. })
  73. })
  74. })