import { test, expect } from '@playwright/test' test.describe('Machine Management E2E Tests', () => { // Skip all tests that require login const username = process.env.TEST_USERNAME || 'admin' const password = process.env.TEST_PASSWORD || 'admin123' async function login(page: any) { await page.goto('/login') await page.getByPlaceholder('请输入用户名').fill(username) await page.getByPlaceholder('请输入密码').fill(password) await page.getByRole('button', { name: '登 录' }).click() await expect(page).not.toHaveURL(/\/login/, { timeout: 10000 }) } test.describe('Machine List Page', () => { test.skip('should display machine management page', async ({ page }) => { await login(page) await page.goto('/machine') // Verify page elements await expect(page.getByRole('button', { name: '新增机器' })).toBeVisible() await expect(page.getByRole('button', { name: '刷新列表' })).toBeVisible() await expect(page.locator('.el-table')).toBeVisible() }) test.skip('should have correct table columns', async ({ page }) => { await login(page) await page.goto('/machine') // Check table headers await expect(page.getByText('机器ID')).toBeVisible() await expect(page.getByText('名称')).toBeVisible() await expect(page.getByText('位置')).toBeVisible() await expect(page.getByText('摄像头数')).toBeVisible() await expect(page.getByText('启用')).toBeVisible() }) }) test.describe('Add Machine Dialog', () => { test.skip('should open add dialog when clicking add button', async ({ page }) => { await login(page) await page.goto('/machine') await page.getByRole('button', { name: '新增机器' }).click() // Verify dialog opens await expect(page.getByRole('dialog')).toBeVisible() await expect(page.getByText('新增机器')).toBeVisible() await expect(page.getByPlaceholder('请输入机器ID')).toBeVisible() await expect(page.getByPlaceholder('请输入名称')).toBeVisible() await expect(page.getByPlaceholder('请输入位置')).toBeVisible() }) test.skip('should validate required fields', async ({ page }) => { await login(page) await page.goto('/machine') await page.getByRole('button', { name: '新增机器' }).click() await page.getByRole('dialog').getByRole('button', { name: '确定' }).click() // Check validation errors await expect(page.getByText('请输入机器ID')).toBeVisible() await expect(page.getByText('请输入名称')).toBeVisible() }) test.skip('should close dialog when clicking cancel', async ({ page }) => { await login(page) await page.goto('/machine') await page.getByRole('button', { name: '新增机器' }).click() await expect(page.getByRole('dialog')).toBeVisible() await page.getByRole('dialog').getByRole('button', { name: '取消' }).click() await expect(page.getByRole('dialog')).not.toBeVisible() }) }) test.describe('Navigation', () => { test.skip('should have machine menu item in sidebar', async ({ page }) => { await login(page) // Check sidebar menu await expect(page.getByText('机器管理')).toBeVisible() }) test.skip('should navigate to machine page from sidebar', async ({ page }) => { await login(page) await page.getByText('机器管理').click() await expect(page).toHaveURL(/\/machine/) }) }) })