machine.spec.ts 3.5 KB

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