import { test, expect } from '@playwright/test'; test.describe('黄历搜索功能E2E测试', () => { test.beforeEach(async ({ page }) => { await page.goto('/#/pages/almanac-search/index'); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); }); test.describe('TC-SEARCH-001: 页面结构', () => { test('应该显示页面标题', async ({ page }) => { const pageTitle = page.locator('.page-title') await expect(pageTitle).toBeVisible() }) test('应该显示搜索条件面板', async ({ page }) => { const pageContent = page.locator('.page-content') await expect(pageContent).toBeVisible() }) test('应该显示底部导航', async ({ page }) => { const bottomNav = page.locator('.page') await expect(bottomNav).toBeVisible() }) }) test.describe('TC-SEARCH-002: 空状态显示', () => { test('初始状态应显示空状态', async ({ page }) => { await page.waitForTimeout(1000) // 未搜索时显示 EmptyState 或空内容 const emptyState = page.locator('.page-content') await expect(emptyState).toBeVisible() }) }) test.describe('TC-SEARCH-003: 响应式设计', () => { test('应该在移动端正常显示', async ({ page }) => { await page.setViewportSize({ width: 375, height: 667 }); await page.reload(); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); const pageTitle = page.locator('.page-title') await expect(pageTitle).toBeVisible() }) test('应该在桌面端正常显示', async ({ page }) => { await page.setViewportSize({ width: 1920, height: 1080 }); await page.reload(); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); const pageTitle = page.locator('.page-title') await expect(pageTitle).toBeVisible() }) }) })