admin-vue3/e2e/tests/smoke.spec.ts

76 lines
2.1 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { setupApiMocks } from '../helpers/api-mocker'
import { LayoutPage } from '../pages/layout.page'
test.describe('冒烟测试 - 重型组件', () => {
test.beforeEach(async ({ page }) => {
await setupApiMocks(page)
})
test('首页正常加载无报错', async ({ page }) => {
// 收集页面错误
const errors: string[] = []
page.on('pageerror', (err) => {
errors.push(err.message)
})
await page.goto('/')
const layout = new LayoutPage(page)
await layout.waitForLayout()
// 等待额外时间让异步组件加载
await page.waitForTimeout(2000)
// 允许某些已知的非致命错误
const criticalErrors = errors.filter(
(e) => !e.includes('ResizeObserver') && !e.includes('Non-Error')
)
expect(criticalErrors).toHaveLength(0)
})
test('BPMN 设计器页面加载', async ({ page }) => {
// Mock 额外的 BPM 相关 API
await page.route('**/admin-api/bpm/**', async (route) => {
await route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ code: 0, data: null, msg: '' })
})
})
// 尝试访问 BPMN 创建页面
await page.goto('/bpm/manager/model/create')
await page.waitForTimeout(3000)
// 验证页面不报错(不白屏)
const body = page.locator('body')
await expect(body).not.toBeEmpty()
// 检查是否有 BPMN 容器(可能需要额外数据才能渲染)
// 冒烟测试只确保不崩溃
})
test('富文本编辑器依赖不阻塞应用', async ({ page }) => {
// 收集页面错误
const errors: string[] = []
page.on('pageerror', (err) => {
errors.push(err.message)
})
await page.goto('/')
const layout = new LayoutPage(page)
await layout.waitForLayout()
// 验证没有未捕获的 JS 错误
await page.waitForTimeout(2000)
// 允许某些已知的非致命错误
const criticalErrors = errors.filter(
(e) => !e.includes('ResizeObserver') && !e.includes('Non-Error')
)
expect(criticalErrors).toHaveLength(0)
})
})