/** * UniApp AIGC页面E2E测试 * * 测试AIGC页面的所有功能和交互 * * @tags @aigc @uniapp @e2e @page */ import { test, expect } from '@playwright/test'; import { TestLogger } from '../../core/test-logger.js'; test.describe('E2E: UniApp AIGC页面', () => { let logger: TestLogger; test.beforeEach(async ({ page }) => { logger = new TestLogger(); await page.goto('http://localhost:8081/pages/aigc/index'); await page.waitForLoadState('networkidle'); }); test('应该显示AIGC页面内容 @smoke', async ({ page }) => { await expect(page.locator('.aigc-container, .aigc-page')).toBeVisible(); }); test('应该显示输入区域 @smoke', async ({ page }) => { await expect(page.locator('.input-area, textarea, .prompt-input')).toBeVisible(); }); test('应该能够输入提示词 @regression', async ({ page }) => { const input = page.locator('.input-area textarea, .prompt-input').first(); await input.fill('生成一个黄历查询'); await expect(input).toHaveValue('生成一个黄历查询'); }); test('应该能够提交生成请求 @critical', async ({ page }) => { const input = page.locator('.input-area textarea, .prompt-input').first(); await input.fill('生成一个黄历查询'); const submitBtn = page.locator('.submit-btn, .generate-btn, button:has-text("生成")').first(); await submitBtn.click(); // 验证加载状态 await expect(page.locator('.loading, .generating')).toBeVisible(); }); test('应该显示生成结果 @critical', async ({ page }) => { // 等待生成完成 await page.waitForTimeout(3000); // 验证结果显示 await expect(page.locator('.result-area, .output-content, .generated-content')).toBeVisible(); }); test('应该能够复制结果 @regression', async ({ page }) => { const copyBtn = page.locator('.copy-btn, button:has-text("复制")').first(); if (await copyBtn.isVisible()) { await copyBtn.click(); // 验证复制成功提示 await expect(page.locator('.toast, .uni-toast')).toContainText('复制成功').catch(() => { logger.info('复制提示可能以其他形式显示'); }); } }); test('应该能够清空输入 @regression', async ({ page }) => { const input = page.locator('.input-area textarea, .prompt-input').first(); await input.fill('测试文本'); const clearBtn = page.locator('.clear-btn, button:has-text("清空")').first(); if (await clearBtn.isVisible()) { await clearBtn.click(); await expect(input).toHaveValue(''); } }); test('应该显示历史记录 @regression', async ({ page }) => { await expect(page.locator('.history-list, .history-section')).toBeVisible().catch(() => { logger.info('历史记录区域可能不存在'); }); }); test('应该在不同视口下正常显示 @responsive', async ({ page }) => { await page.setViewportSize({ width: 375, height: 667 }); await page.goto('http://localhost:8081/pages/aigc/index'); await expect(page.locator('.aigc-container')).toBeVisible(); }); });