61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
import { expect, test } from '@playwright/test'
|
|
|
|
/**
|
|
* 验证去掉分页、默认 1000 行后的 /ocean/booking。
|
|
*
|
|
* 注意:ERP 的 Vite dep 缓存可能是旧包(曾实测缓存里没有 G3Table),
|
|
* 若行编辑相关断言失败,先确认缓存已刷新再判断是页面问题。
|
|
*/
|
|
test.describe('/ocean/booking(无分页,1000 行)', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/ocean/booking')
|
|
await page.waitForTimeout(1500)
|
|
})
|
|
|
|
test('页面渲染表格,且分页器已移除', async ({ page }) => {
|
|
await expect(page.locator('.booking__title')).toHaveText('订舱单')
|
|
await expect(page.locator('.g3-table')).toBeVisible()
|
|
// 分页器不该再存在
|
|
await expect(page.locator('.g3-pagination')).toHaveCount(0)
|
|
// 「每页」选择器也不该存在
|
|
await expect(page.locator('.booking__field').filter({ hasText: '每页' })).toHaveCount(0)
|
|
})
|
|
|
|
test('数据量选择器默认 1000,且只保留一个下拉', async ({ page }) => {
|
|
const selects = page.locator('.booking__select')
|
|
await expect(selects).toHaveCount(1)
|
|
await expect(selects.first()).toHaveValue('1000')
|
|
})
|
|
|
|
test('1000 行数据:虚拟滚动开启,DOM 行数远少于 1000', async ({ page }) => {
|
|
const stk = page.locator('.g3-table .stk-table').first()
|
|
// 库开启虚拟滚动时会加 .virtual 类
|
|
await expect(stk).toHaveClass(/virtual/)
|
|
|
|
const rendered = await page.locator('.stk-tbody-main tr').count()
|
|
console.log('DOM ROWS (1000 数据): ' + rendered)
|
|
expect(rendered).toBeGreaterThan(0)
|
|
expect(rendered).toBeLessThan(200)
|
|
})
|
|
|
|
test('可滚动到底部(数据确实有 1000 行)', async ({ page }) => {
|
|
const info = await page.locator('.g3-table .stk-table').first().evaluate((el) => {
|
|
const stk = el as HTMLElement
|
|
return { scrollH: stk.scrollHeight, clientH: stk.clientHeight }
|
|
})
|
|
console.log('SCROLL: ' + JSON.stringify(info))
|
|
// 1000 行 * 32px 行高 ≈ 32000,远大于视口
|
|
expect(info.scrollH).toBeGreaterThan(10000)
|
|
})
|
|
|
|
test('切换数据量到 100 行后虚拟滚动关闭(低于阈值)', async ({ page }) => {
|
|
await page.locator('.booking__select').first().selectOption('100')
|
|
await page.waitForTimeout(600)
|
|
|
|
const stk = page.locator('.g3-table .stk-table').first()
|
|
await expect(stk).not.toHaveClass(/virtual/)
|
|
// 100 行全量渲染
|
|
await expect(page.locator('.stk-tbody-main tr')).toHaveCount(100)
|
|
})
|
|
})
|