76 lines
2.1 KiB
TypeScript
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)
|
|
})
|
|
})
|