speccore 8.3.46 → 8.3.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +6 -1
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +62 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/verify.d.ts +9 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +294 -6
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/ui-verify/index.d.ts +8 -0
- package/dist/core/ui-verify/index.d.ts.map +1 -0
- package/dist/core/ui-verify/index.js +29 -0
- package/dist/core/ui-verify/index.js.map +1 -0
- package/dist/core/ui-verify/report-generator.d.ts +6 -0
- package/dist/core/ui-verify/report-generator.d.ts.map +1 -0
- package/dist/core/ui-verify/report-generator.js +209 -0
- package/dist/core/ui-verify/report-generator.js.map +1 -0
- package/dist/core/ui-verify/smoke-engine.d.ts +16 -0
- package/dist/core/ui-verify/smoke-engine.d.ts.map +1 -0
- package/dist/core/ui-verify/smoke-engine.js +297 -0
- package/dist/core/ui-verify/smoke-engine.js.map +1 -0
- package/dist/core/ui-verify/types.d.ts +100 -0
- package/dist/core/ui-verify/types.d.ts.map +1 -0
- package/dist/core/ui-verify/types.js +8 -0
- package/dist/core/ui-verify/types.js.map +1 -0
- package/dist/core/ui-verify/visual-engine.d.ts +21 -0
- package/dist/core/ui-verify/visual-engine.d.ts.map +1 -0
- package/dist/core/ui-verify/visual-engine.js +217 -0
- package/dist/core/ui-verify/visual-engine.js.map +1 -0
- package/package.json +3 -2
package/dist/commands/verify.js
CHANGED
|
@@ -20,13 +20,32 @@ const path_1 = require("path");
|
|
|
20
20
|
const resolver_1 = require("../core/resolver");
|
|
21
21
|
const verify_engine_1 = require("../core/verify-engine");
|
|
22
22
|
const unified_config_1 = require("../core/unified-config");
|
|
23
|
+
const yaml_parser_1 = require("../core/yaml-parser");
|
|
24
|
+
const ui_verify_1 = require("../core/ui-verify");
|
|
23
25
|
async function verifyCommand(options) {
|
|
24
26
|
const spinner = new logger_1.Spinner('正在执行代码验证...');
|
|
25
27
|
spinner.start();
|
|
26
28
|
try {
|
|
29
|
+
// ============================================================
|
|
30
|
+
// 模式一:独立模式(无项目结构,直接测任意 URL)
|
|
31
|
+
// ============================================================
|
|
32
|
+
if ((options.ui || options.smokeOnly || options.visualOnly) && (options.url || options.spec)) {
|
|
33
|
+
spinner.stop();
|
|
34
|
+
logger_1.logger.info('🌐 独立模式:不依赖 SpecCore 项目结构');
|
|
35
|
+
const uiReport = await runUIVerificationIndependent(options);
|
|
36
|
+
if (uiReport) {
|
|
37
|
+
logger_1.logger.info('');
|
|
38
|
+
logUIReport(uiReport);
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// ============================================================
|
|
43
|
+
// 模式二/三:需要 SpecCore 项目结构
|
|
44
|
+
// ============================================================
|
|
27
45
|
const iteration = await (0, context_1.getDefaultIteration)(options.iteration);
|
|
28
46
|
if (!iteration) {
|
|
29
47
|
spinner.fail('未找到活跃迭代。请先运行: speccore iteration create --name <名称>');
|
|
48
|
+
logger_1.logger.info('💡 或使用独立模式: speccore verify --ui --url=https://example.com --spec=./test.yaml');
|
|
30
49
|
return;
|
|
31
50
|
}
|
|
32
51
|
const iterDir = await (0, context_1.getIterationDir)(iteration);
|
|
@@ -38,7 +57,6 @@ async function verifyCommand(options) {
|
|
|
38
57
|
codePath = options.path;
|
|
39
58
|
}
|
|
40
59
|
else {
|
|
41
|
-
// 从 projectConfig.code_scope 获取第一个代码路径
|
|
42
60
|
codePath = projectConfig.code_scope?.[0] || process.cwd();
|
|
43
61
|
if (!codePath.startsWith('/')) {
|
|
44
62
|
codePath = (0, path_1.join)(process.cwd(), codePath);
|
|
@@ -50,7 +68,7 @@ async function verifyCommand(options) {
|
|
|
50
68
|
logger_1.logger.info('💡 使用 --path 指定正确的代码路径,或在 .speccore.yml 中配置 code_scope');
|
|
51
69
|
return;
|
|
52
70
|
}
|
|
53
|
-
//
|
|
71
|
+
// ── 模式三:任务绑定模式 ──
|
|
54
72
|
if (options.task) {
|
|
55
73
|
const taskResult = await (0, resolver_1.resolveTask)(options.task, iteration);
|
|
56
74
|
if (!taskResult.exact || !taskResult.value) {
|
|
@@ -64,26 +82,45 @@ async function verifyCommand(options) {
|
|
|
64
82
|
}
|
|
65
83
|
const task = taskResult.value;
|
|
66
84
|
spinner.stop();
|
|
67
|
-
//
|
|
85
|
+
// UI 验证(任务绑定)
|
|
86
|
+
if (options.ui || options.smokeOnly || options.visualOnly) {
|
|
87
|
+
const uiReport = await runUIVerification(task.id, iterDir, options);
|
|
88
|
+
if (uiReport) {
|
|
89
|
+
logger_1.logger.info('');
|
|
90
|
+
logUIReport(uiReport);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// 代码验证
|
|
68
95
|
const taskCodePath = await findTaskCodePath(task, iterDir, codePath);
|
|
69
96
|
const report = await (0, verify_engine_1.runVerification)(task.id, taskCodePath, {
|
|
70
97
|
type: options.type || 'all',
|
|
71
98
|
timeout: options.timeout,
|
|
72
99
|
});
|
|
73
|
-
// 写入报告
|
|
74
100
|
const taskDir = await findTaskDir(task.id, iterDir);
|
|
75
101
|
const reportDir = taskDir ? (0, path_1.join)(taskDir, '99-artifacts') : (0, path_1.join)(iterDir, '020-specs');
|
|
76
102
|
const reportPath = await (0, verify_engine_1.writeVerifyReport)(report, reportDir);
|
|
77
103
|
logReport(report, reportPath);
|
|
78
104
|
return;
|
|
79
105
|
}
|
|
80
|
-
//
|
|
106
|
+
// ── 模式二:项目内独立模式(有项目,无任务)──
|
|
107
|
+
if (options.ui || options.smokeOnly || options.visualOnly) {
|
|
108
|
+
spinner.stop();
|
|
109
|
+
logger_1.logger.info('📁 项目内独立模式:使用项目配置,但不绑定任务');
|
|
110
|
+
// 尝试从项目 tests/ 目录或 --spec 参数读取
|
|
111
|
+
const uiReport = await runUIVerificationProject(options, iterDir, projectConfig);
|
|
112
|
+
if (uiReport) {
|
|
113
|
+
logger_1.logger.info('');
|
|
114
|
+
logUIReport(uiReport);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// 迭代级验证(原有逻辑)
|
|
81
119
|
spinner.stop();
|
|
82
120
|
const report = await (0, verify_engine_1.runVerification)(`Iteration-${iteration}`, codePath, {
|
|
83
121
|
type: options.type || 'all',
|
|
84
122
|
timeout: options.timeout,
|
|
85
123
|
});
|
|
86
|
-
// 写入报告到迭代级
|
|
87
124
|
const reportDir = (0, path_1.join)(iterDir, '020-specs');
|
|
88
125
|
const reportPath = await (0, verify_engine_1.writeVerifyReport)(report, reportDir);
|
|
89
126
|
logReport(report, reportPath);
|
|
@@ -156,4 +193,255 @@ function logReport(report, reportPath) {
|
|
|
156
193
|
logger_1.logger.info(` 修复失败项后重新运行: speccore verify -t ${report.taskId}`);
|
|
157
194
|
}
|
|
158
195
|
}
|
|
196
|
+
// ============================================================
|
|
197
|
+
// UI 验证辅助函数(v8.3.47+)
|
|
198
|
+
// ============================================================
|
|
199
|
+
async function runUIVerification(taskId, iterDir, options) {
|
|
200
|
+
const taskDir = await findTaskDir(taskId, iterDir);
|
|
201
|
+
if (!taskDir) {
|
|
202
|
+
logger_1.logger.warn(`未找到任务目录: ${taskId}`);
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
// 查找 VERIFY_SPEC.yaml
|
|
206
|
+
const specPaths = [
|
|
207
|
+
(0, path_1.join)(taskDir, 'VERIFY_SPEC.yaml'),
|
|
208
|
+
(0, path_1.join)(taskDir, '00-specs', 'VERIFY_SPEC.yaml'),
|
|
209
|
+
(0, path_1.join)(taskDir, 'frontend', 'VERIFY_SPEC.yaml'),
|
|
210
|
+
(0, path_1.join)(taskDir, 'web', 'VERIFY_SPEC.yaml'),
|
|
211
|
+
];
|
|
212
|
+
let specPath = null;
|
|
213
|
+
for (const p of specPaths) {
|
|
214
|
+
if (await (0, fs_extra_1.pathExists)(p)) {
|
|
215
|
+
specPath = p;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (!specPath) {
|
|
220
|
+
logger_1.logger.warn(`未找到 VERIFY_SPEC.yaml,跳过 UI 验证`);
|
|
221
|
+
logger_1.logger.info(`💡 在任务目录下创建 VERIFY_SPEC.yaml 以启用 UI 验证`);
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
logger_1.logger.info(`📄 加载测试规格: ${specPath}`);
|
|
225
|
+
const parseResult = await (0, yaml_parser_1.parseYamlFile)(specPath);
|
|
226
|
+
if (!parseResult.success || !parseResult.data) {
|
|
227
|
+
logger_1.logger.error(`解析 VERIFY_SPEC.yaml 失败: ${parseResult.error}`);
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
const spec = parseResult.data;
|
|
231
|
+
// 准备目录
|
|
232
|
+
const screenshotDir = (0, path_1.join)(taskDir, '99-artifacts', 'screenshots');
|
|
233
|
+
const baselineDir = (0, path_1.join)(taskDir, '99-artifacts', 'baselines');
|
|
234
|
+
const diffDir = (0, path_1.join)(taskDir, '99-artifacts', 'diffs');
|
|
235
|
+
const reportDir = (0, path_1.join)(taskDir, '99-artifacts');
|
|
236
|
+
await (0, fs_extra_1.ensureDir)(screenshotDir);
|
|
237
|
+
await (0, fs_extra_1.ensureDir)(baselineDir);
|
|
238
|
+
await (0, fs_extra_1.ensureDir)(diffDir);
|
|
239
|
+
const uiOptions = {
|
|
240
|
+
smokeTest: !options.visualOnly,
|
|
241
|
+
visualCheck: !options.smokeOnly,
|
|
242
|
+
devices: options.device ? [options.device] : ['desktop'],
|
|
243
|
+
browsers: options.browser ? [options.browser] : ['chromium'],
|
|
244
|
+
updateBaseline: options.updateBaseline || false,
|
|
245
|
+
threshold: 'normal',
|
|
246
|
+
timeout: options.timeout || 30000,
|
|
247
|
+
};
|
|
248
|
+
const startTime = Date.now();
|
|
249
|
+
let smokeResults = [];
|
|
250
|
+
let visualResults = [];
|
|
251
|
+
// 1. 执行冒烟测试
|
|
252
|
+
if (uiOptions.smokeTest) {
|
|
253
|
+
logger_1.logger.info('🔥 执行冒烟测试...');
|
|
254
|
+
smokeResults = await (0, ui_verify_1.runSmokeTest)(spec, {
|
|
255
|
+
screenshotDir,
|
|
256
|
+
browser: uiOptions.browsers?.[0],
|
|
257
|
+
device: uiOptions.devices?.[0],
|
|
258
|
+
timeout: uiOptions.timeout,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
// 2. 执行视觉检查
|
|
262
|
+
if (uiOptions.visualCheck) {
|
|
263
|
+
logger_1.logger.info('👁️ 执行视觉检查...');
|
|
264
|
+
visualResults = await (0, ui_verify_1.runVisualCheck)(smokeResults, {
|
|
265
|
+
baselineDir,
|
|
266
|
+
screenshotDir,
|
|
267
|
+
diffDir,
|
|
268
|
+
threshold: uiOptions.threshold || 'normal',
|
|
269
|
+
updateBaseline: uiOptions.updateBaseline || false,
|
|
270
|
+
visualModel: uiOptions.visualModel,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
const duration = Date.now() - startTime;
|
|
274
|
+
const allResults = [...smokeResults, ...visualResults];
|
|
275
|
+
const passed = allResults.filter((r) => r.passed).length;
|
|
276
|
+
const failed = allResults.filter((r) => !r.passed).length;
|
|
277
|
+
const report = {
|
|
278
|
+
taskId,
|
|
279
|
+
timestamp: new Date().toISOString(),
|
|
280
|
+
platform: spec.platform,
|
|
281
|
+
url: spec.url,
|
|
282
|
+
smokeEnabled: uiOptions.smokeTest,
|
|
283
|
+
visualEnabled: uiOptions.visualCheck,
|
|
284
|
+
smokeResults,
|
|
285
|
+
visualResults,
|
|
286
|
+
summary: {
|
|
287
|
+
total: allResults.length,
|
|
288
|
+
passed,
|
|
289
|
+
failed,
|
|
290
|
+
duration,
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
// 生成 HTML 报告
|
|
294
|
+
const htmlPath = await (0, ui_verify_1.generateHtmlReport)(report, reportDir);
|
|
295
|
+
logger_1.logger.info(`📄 UI 验证报告: ${htmlPath}`);
|
|
296
|
+
return report;
|
|
297
|
+
}
|
|
298
|
+
function logUIReport(report) {
|
|
299
|
+
const { summary } = report;
|
|
300
|
+
const passRate = summary.total > 0 ? Math.round((summary.passed / summary.total) * 100) : 0;
|
|
301
|
+
logger_1.logger.info('');
|
|
302
|
+
logger_1.logger.info(`🎨 UI 验证报告 — ${report.taskId}`);
|
|
303
|
+
logger_1.logger.info(` 平台: ${report.platform} | URL: ${report.url}`);
|
|
304
|
+
logger_1.logger.info(` 冒烟测试: ${report.smokeEnabled ? '✅' : '⏭️'} | 视觉检查: ${report.visualEnabled ? '✅' : '⏭️'}`);
|
|
305
|
+
logger_1.logger.info('');
|
|
306
|
+
if (report.smokeEnabled && report.smokeResults.length > 0) {
|
|
307
|
+
logger_1.logger.info(' 🔥 冒烟测试结果:');
|
|
308
|
+
for (const r of report.smokeResults) {
|
|
309
|
+
const icon = r.passed ? '✅' : '❌';
|
|
310
|
+
logger_1.logger.info(` ${icon} ${r.scenarioName} (${r.steps.filter((s) => s.passed).length}/${r.steps.length} 步通过)`);
|
|
311
|
+
}
|
|
312
|
+
logger_1.logger.info('');
|
|
313
|
+
}
|
|
314
|
+
if (report.visualEnabled && report.visualResults.length > 0) {
|
|
315
|
+
logger_1.logger.info(' 👁️ 视觉检查结果:');
|
|
316
|
+
for (const r of report.visualResults) {
|
|
317
|
+
const icon = r.passed ? '✅' : '⚠️';
|
|
318
|
+
const issueCount = r.issues.length;
|
|
319
|
+
logger_1.logger.info(` ${icon} ${r.scenarioName}${issueCount > 0 ? ` (${issueCount} 项问题)` : ''}`);
|
|
320
|
+
}
|
|
321
|
+
logger_1.logger.info('');
|
|
322
|
+
}
|
|
323
|
+
logger_1.logger.info(` 通过率: ${passRate}% (${summary.passed}/${summary.total})`);
|
|
324
|
+
if (summary.failed > 0) {
|
|
325
|
+
logger_1.logger.warn(` ❌ ${summary.failed} 项检查失败`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// ============================================================
|
|
329
|
+
// 模式一:独立模式(无项目结构)
|
|
330
|
+
// ============================================================
|
|
331
|
+
async function runUIVerificationIndependent(options) {
|
|
332
|
+
const specPath = options.spec;
|
|
333
|
+
const url = options.url;
|
|
334
|
+
if (!specPath || !(await (0, fs_extra_1.pathExists)(specPath))) {
|
|
335
|
+
logger_1.logger.warn(`未找到测试规格文件: ${specPath}`);
|
|
336
|
+
logger_1.logger.info('💡 使用 --spec=./VERIFY_SPEC.yaml 指定测试规格');
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
logger_1.logger.info(`📄 加载测试规格: ${specPath}`);
|
|
340
|
+
const parseResult = await (0, yaml_parser_1.parseYamlFile)(specPath);
|
|
341
|
+
if (!parseResult.success || !parseResult.data) {
|
|
342
|
+
logger_1.logger.error(`解析规格文件失败: ${parseResult.error}`);
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
const spec = parseResult.data;
|
|
346
|
+
// 如果命令行指定了 url,覆盖规格中的 url
|
|
347
|
+
if (url) {
|
|
348
|
+
spec.url = url;
|
|
349
|
+
}
|
|
350
|
+
const outputDir = options.output || (0, path_1.join)(process.cwd(), 'reports');
|
|
351
|
+
const screenshotDir = (0, path_1.join)(outputDir, 'screenshots');
|
|
352
|
+
const baselineDir = (0, path_1.join)(outputDir, 'baselines');
|
|
353
|
+
const diffDir = (0, path_1.join)(outputDir, 'diffs');
|
|
354
|
+
await (0, fs_extra_1.ensureDir)(screenshotDir);
|
|
355
|
+
await (0, fs_extra_1.ensureDir)(baselineDir);
|
|
356
|
+
await (0, fs_extra_1.ensureDir)(diffDir);
|
|
357
|
+
const uiOptions = {
|
|
358
|
+
smokeTest: !options.visualOnly,
|
|
359
|
+
visualCheck: !options.smokeOnly,
|
|
360
|
+
devices: options.device ? [options.device] : ['desktop'],
|
|
361
|
+
browsers: options.browser ? [options.browser] : ['chromium'],
|
|
362
|
+
updateBaseline: options.updateBaseline || false,
|
|
363
|
+
threshold: 'normal',
|
|
364
|
+
timeout: options.timeout || 30000,
|
|
365
|
+
};
|
|
366
|
+
const startTime = Date.now();
|
|
367
|
+
let smokeResults = [];
|
|
368
|
+
let visualResults = [];
|
|
369
|
+
if (uiOptions.smokeTest) {
|
|
370
|
+
logger_1.logger.info('🔥 执行冒烟测试...');
|
|
371
|
+
smokeResults = await (0, ui_verify_1.runSmokeTest)(spec, {
|
|
372
|
+
screenshotDir,
|
|
373
|
+
browser: uiOptions.browsers?.[0],
|
|
374
|
+
device: uiOptions.devices?.[0],
|
|
375
|
+
timeout: uiOptions.timeout,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
if (uiOptions.visualCheck) {
|
|
379
|
+
logger_1.logger.info('👁️ 执行视觉检查...');
|
|
380
|
+
visualResults = await (0, ui_verify_1.runVisualCheck)(smokeResults, {
|
|
381
|
+
baselineDir,
|
|
382
|
+
screenshotDir,
|
|
383
|
+
diffDir,
|
|
384
|
+
threshold: uiOptions.threshold || 'normal',
|
|
385
|
+
updateBaseline: uiOptions.updateBaseline || false,
|
|
386
|
+
visualModel: uiOptions.visualModel,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
const duration = Date.now() - startTime;
|
|
390
|
+
const allResults = [...smokeResults, ...visualResults];
|
|
391
|
+
const passed = allResults.filter((r) => r.passed).length;
|
|
392
|
+
const failed = allResults.filter((r) => !r.passed).length;
|
|
393
|
+
const report = {
|
|
394
|
+
taskId: 'independent',
|
|
395
|
+
timestamp: new Date().toISOString(),
|
|
396
|
+
platform: spec.platform,
|
|
397
|
+
url: spec.url,
|
|
398
|
+
smokeEnabled: uiOptions.smokeTest,
|
|
399
|
+
visualEnabled: uiOptions.visualCheck,
|
|
400
|
+
smokeResults,
|
|
401
|
+
visualResults,
|
|
402
|
+
summary: {
|
|
403
|
+
total: allResults.length,
|
|
404
|
+
passed,
|
|
405
|
+
failed,
|
|
406
|
+
duration,
|
|
407
|
+
},
|
|
408
|
+
};
|
|
409
|
+
const htmlPath = await (0, ui_verify_1.generateHtmlReport)(report, outputDir);
|
|
410
|
+
logger_1.logger.info(`📄 UI 验证报告: ${htmlPath}`);
|
|
411
|
+
return report;
|
|
412
|
+
}
|
|
413
|
+
// ============================================================
|
|
414
|
+
// 模式二:项目内独立模式(有项目,无任务)
|
|
415
|
+
// ============================================================
|
|
416
|
+
async function runUIVerificationProject(options, iterDir, projectConfig) {
|
|
417
|
+
// 1. 优先使用 --spec 指定的文件
|
|
418
|
+
if (options.spec && (await (0, fs_extra_1.pathExists)(options.spec))) {
|
|
419
|
+
return runUIVerificationIndependent({
|
|
420
|
+
...options,
|
|
421
|
+
output: options.output || (0, path_1.join)(iterDir, '020-specs', 'ui-reports'),
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
// 2. 查找项目 tests/ 目录下的 VERIFY_SPEC.yaml
|
|
425
|
+
const testsDir = (0, path_1.join)(process.cwd(), 'tests');
|
|
426
|
+
const projectTestsDir = (0, path_1.join)(process.cwd(), '.speccore', 'tests');
|
|
427
|
+
const specPaths = [
|
|
428
|
+
(0, path_1.join)(testsDir, 'VERIFY_SPEC.yaml'),
|
|
429
|
+
(0, path_1.join)(projectTestsDir, 'VERIFY_SPEC.yaml'),
|
|
430
|
+
(0, path_1.join)(testsDir, 'ui-test.yaml'),
|
|
431
|
+
(0, path_1.join)(projectTestsDir, 'ui-test.yaml'),
|
|
432
|
+
];
|
|
433
|
+
for (const p of specPaths) {
|
|
434
|
+
if (await (0, fs_extra_1.pathExists)(p)) {
|
|
435
|
+
logger_1.logger.info(`📄 发现项目测试规格: ${p}`);
|
|
436
|
+
return runUIVerificationIndependent({
|
|
437
|
+
...options,
|
|
438
|
+
spec: p,
|
|
439
|
+
output: options.output || (0, path_1.join)(iterDir, '020-specs', 'ui-reports'),
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
logger_1.logger.warn('未找到项目内测试规格文件');
|
|
444
|
+
logger_1.logger.info('💡 在项目根目录创建 tests/VERIFY_SPEC.yaml,或使用 --spec 指定');
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
159
447
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Verify — 统一导出
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export { runSmokeTest } from './smoke-engine';
|
|
6
|
+
export { runVisualCheck, isVisualModelAvailable } from './visual-engine';
|
|
7
|
+
export { generateHtmlReport } from './report-generator';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/ui-verify/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UI Verify — 统一导出
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.generateHtmlReport = exports.isVisualModelAvailable = exports.runVisualCheck = exports.runSmokeTest = void 0;
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
var smoke_engine_1 = require("./smoke-engine");
|
|
23
|
+
Object.defineProperty(exports, "runSmokeTest", { enumerable: true, get: function () { return smoke_engine_1.runSmokeTest; } });
|
|
24
|
+
var visual_engine_1 = require("./visual-engine");
|
|
25
|
+
Object.defineProperty(exports, "runVisualCheck", { enumerable: true, get: function () { return visual_engine_1.runVisualCheck; } });
|
|
26
|
+
Object.defineProperty(exports, "isVisualModelAvailable", { enumerable: true, get: function () { return visual_engine_1.isVisualModelAvailable; } });
|
|
27
|
+
var report_generator_1 = require("./report-generator");
|
|
28
|
+
Object.defineProperty(exports, "generateHtmlReport", { enumerable: true, get: function () { return report_generator_1.generateHtmlReport; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/ui-verify/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAyE;AAAhE,+GAAA,cAAc,OAAA;AAAE,uHAAA,sBAAsB,OAAA;AAC/C,uDAAwD;AAA/C,sHAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../../src/core/ui-verify/report-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAyIjB"}
|