Files
YG_FT/frontend/scripts/regression-data-convert.mjs

57 lines
2.6 KiB
JavaScript
Raw Normal View History

2026-07-27 09:12:47 +08:00
import assert from 'node:assert/strict'
import { readFile } from 'node:fs/promises'
import { fileURLToPath } from 'node:url'
import path from 'node:path'
const scriptDir = path.dirname(fileURLToPath(import.meta.url))
const sourceRoot = path.resolve(scriptDir, '../src')
const [viewSource, routerSource, toolsSource] = await Promise.all([
readFile(path.join(sourceRoot, 'views/data-convert/DataConvertView.vue'), 'utf8'),
readFile(path.join(sourceRoot, 'router/index.ts'), 'utf8'),
readFile(path.join(sourceRoot, 'views/tools/ToolsView.vue'), 'utf8'),
])
assert.match(viewSource, /JSON 转 JSONL/, '转换页缺少明确的格式标题')
assert.match(viewSource, /class="upload-zone"/, '转换页缺少源文件上传区域')
assert.match(viewSource, /class="converter-form"/, '转换页缺少标准表单区域')
assert.match(viewSource, /class="form-row"/, '转换页缺少输出配置区域')
assert.match(viewSource, /开始转换/, '转换页缺少主操作按钮')
assert.match(viewSource, /当前为 UI 原型/, '转换页没有明确说明 UI 原型范围')
assert.match(viewSource, /<el-button type="primary" disabled>/, '未接入功能前主操作按钮必须禁用')
assert.match(viewSource, /var\(--primary-color\)/, '转换页没有使用项目主色变量')
assert.match(viewSource, /var\(--el-color-primary-light-9\)/, '转换页没有使用项目主色浅色变量')
assert.doesNotMatch(viewSource, /#1890ff/i, '转换页仍包含未对齐当前主题的旧蓝色')
assert.match(viewSource, /\.converter-panel\s*\{[\s\S]*?width:\s*100%;/, '转换区域没有铺满页面宽度')
assert.match(viewSource, /min-height:\s*calc\(100vh\s*-\s*220px\)/, '转换区域没有铺满页面可用高度')
assert.doesNotMatch(viewSource, /max-width:\s*860px/, '转换区域仍被限制为窄卡片')
// 当前迭代只允许界面开发,防止误接入文件读取、解析、转换或下载逻辑。
for (const forbiddenImplementation of [
/FileReader/,
/\.text\(\)/,
/JSON\.parse/,
/new Blob/,
/createObjectURL/,
]) {
assert.doesNotMatch(viewSource, forbiddenImplementation, 'UI 原型中不应包含实际转换实现')
}
assert.match(
routerSource,
/path:\s*['"]data-convert['"][\s\S]*?DataConvertView\.vue/,
'数据类型转换路由未接入新页面',
)
assert.doesNotMatch(
routerSource,
/path:\s*['"]data-convert['"][\s\S]{0,180}?PlaceholderView\.vue/,
'数据类型转换路由仍指向占位页',
)
assert.match(
toolsSource,
/id === ['"]json2jsonl['"][\s\S]{0,100}?router\.push\(['"]\/data-convert['"]\)/,
'其他工具中的 JSON 转 JSONL 卡片未接入转换页',
)
console.log('JSON 转 JSONL UI 原型回归检查通过')