frontend-guardian-core 3.8.0 → 3.10.0
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/bin/fg-core.js +90 -6
- package/bin/fg-lsp.js +1 -1
- package/bin/fg-server.js +2 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/index.d.ts +6 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +21 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/page-health.d.ts +33 -0
- package/dist/integrations/page-health.d.ts.map +1 -1
- package/dist/integrations/page-health.js +182 -19
- package/dist/integrations/page-health.js.map +1 -1
- package/dist/mcp/mcp-server.js +1 -1
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +92 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts +25 -2
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/utils/e2e-gap-detector.d.ts +4 -0
- package/dist/utils/e2e-gap-detector.d.ts.map +1 -1
- package/dist/utils/e2e-gap-detector.js +23 -21
- package/dist/utils/e2e-gap-detector.js.map +1 -1
- package/dist/utils/lighthouse-metrics.d.ts +49 -0
- package/dist/utils/lighthouse-metrics.d.ts.map +1 -0
- package/dist/utils/lighthouse-metrics.js +113 -0
- package/dist/utils/lighthouse-metrics.js.map +1 -0
- package/dist/utils/runtime-a11y.d.ts +40 -0
- package/dist/utils/runtime-a11y.d.ts.map +1 -0
- package/dist/utils/runtime-a11y.js +100 -0
- package/dist/utils/runtime-a11y.js.map +1 -0
- package/dist/utils/test-recommender.d.ts +68 -0
- package/dist/utils/test-recommender.d.ts.map +1 -0
- package/dist/utils/test-recommender.js +334 -0
- package/dist/utils/test-recommender.js.map +1 -0
- package/dist/utils/visual-regression.d.ts +55 -0
- package/dist/utils/visual-regression.d.ts.map +1 -0
- package/dist/utils/visual-regression.js +141 -0
- package/dist/utils/visual-regression.js.map +1 -0
- package/package.json +1 -1
package/bin/fg-core.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { writeFileSync } from "node:fs";
|
|
8
|
-
import { join } from "node:path";
|
|
8
|
+
import { join, resolve } from "node:path";
|
|
9
9
|
import pc from "picocolors";
|
|
10
10
|
import {
|
|
11
11
|
AIFixSuggester,
|
|
@@ -107,7 +107,7 @@ const MODULE_RULES = {
|
|
|
107
107
|
|
|
108
108
|
function showHelp() {
|
|
109
109
|
console.log(`
|
|
110
|
-
Frontend Guardian Core v3.
|
|
110
|
+
Frontend Guardian Core v3.10.0
|
|
111
111
|
|
|
112
112
|
Usage:
|
|
113
113
|
fg-core <project-dir> [options]
|
|
@@ -176,9 +176,18 @@ Options:
|
|
|
176
176
|
--no-check-interactive 禁用交互元素检查(配合 --page-health)
|
|
177
177
|
--update-baseline 更新基线截图(配合 --page-health)
|
|
178
178
|
--page-health-concurrency <n> 页面健康检查并发数(默认 3,配合 --page-health)
|
|
179
|
+
--screenshot-selector <selector> 元素级截图选择器(配合 --page-health)
|
|
180
|
+
--max-diff-pixels <n> 视觉回归最大差异像素数(默认 100,配合 --page-health)
|
|
181
|
+
--max-diff-pixel-ratio <n> 视觉回归最大差异比例(默认 0.01,配合 --page-health)
|
|
182
|
+
--mask-selectors <list> 额外遮罩选择器,逗号分隔(配合 --page-health)
|
|
183
|
+
--no-mask 禁用动态内容遮罩(配合 --page-health)
|
|
184
|
+
--page-health-metrics 启用 Lighthouse Core Web Vitals(配合 --page-health)
|
|
185
|
+
--a11y 启用运行时无障碍检测(配合 --page-health)
|
|
186
|
+
--a11y-tags <list> axe-core 过滤标签,逗号分隔(默认 wcag2a,wcag2aa,配合 --page-health)
|
|
179
187
|
--build-index 建立项目索引(预索引文件结构、符号、路由)
|
|
180
188
|
--watch-index 监听文件变更并自动同步索引
|
|
181
189
|
--index-status 查看项目索引状态
|
|
190
|
+
--recommend-tests 智能测试推荐:基于变更影响分析推荐需要运行的测试(可配合 --staged/--diff/--auto-scope/--files)
|
|
182
191
|
--mcp 启动 MCP Server(stdio,供 AI Agent 调用)
|
|
183
192
|
--help, -h 显示帮助
|
|
184
193
|
|
|
@@ -265,9 +274,20 @@ async function main() {
|
|
|
265
274
|
checkInteractive: true,
|
|
266
275
|
pageHealthConcurrency: 3,
|
|
267
276
|
updateBaseline: false,
|
|
277
|
+
// v3.10.0
|
|
278
|
+
screenshotSelector: undefined,
|
|
279
|
+
maxDiffPixels: undefined,
|
|
280
|
+
maxDiffPixelRatio: undefined,
|
|
281
|
+
noMask: false,
|
|
282
|
+
maskSelectors: undefined,
|
|
283
|
+
pageHealthMetrics: false,
|
|
284
|
+
cwvThresholds: undefined,
|
|
285
|
+
a11y: false,
|
|
286
|
+
a11yTags: undefined,
|
|
268
287
|
buildIndex: false,
|
|
269
288
|
watchIndex: false,
|
|
270
289
|
indexStatus: false,
|
|
290
|
+
recommendTests: false,
|
|
271
291
|
mcp: false,
|
|
272
292
|
};
|
|
273
293
|
|
|
@@ -434,7 +454,13 @@ async function main() {
|
|
|
434
454
|
options.server = args[++i];
|
|
435
455
|
break;
|
|
436
456
|
case "--serve":
|
|
437
|
-
|
|
457
|
+
// --serve 单独使用:启动本地看板服务
|
|
458
|
+
// --serve <cmd>:为 page-health 启动 dev server
|
|
459
|
+
if (i + 1 < args.length && !args[i + 1].startsWith("-")) {
|
|
460
|
+
options.serveCommand = args[++i];
|
|
461
|
+
} else {
|
|
462
|
+
options.serve = true;
|
|
463
|
+
}
|
|
438
464
|
break;
|
|
439
465
|
case "--e2e-detect-gaps":
|
|
440
466
|
options.e2eDetectGaps = true;
|
|
@@ -445,9 +471,6 @@ async function main() {
|
|
|
445
471
|
case "--page-health":
|
|
446
472
|
options.pageHealth = true;
|
|
447
473
|
break;
|
|
448
|
-
case "--serve":
|
|
449
|
-
options.serveCommand = args[++i];
|
|
450
|
-
break;
|
|
451
474
|
case "--port":
|
|
452
475
|
options.servePort = parseInt(args[++i], 10) || 5173;
|
|
453
476
|
break;
|
|
@@ -469,6 +492,31 @@ async function main() {
|
|
|
469
492
|
case "--page-health-concurrency":
|
|
470
493
|
options.pageHealthConcurrency = parseInt(args[++i], 10) || 3;
|
|
471
494
|
break;
|
|
495
|
+
// v3.10.0 页面测试进阶
|
|
496
|
+
case "--screenshot-selector":
|
|
497
|
+
options.screenshotSelector = args[++i];
|
|
498
|
+
break;
|
|
499
|
+
case "--max-diff-pixels":
|
|
500
|
+
options.maxDiffPixels = parseInt(args[++i], 10);
|
|
501
|
+
break;
|
|
502
|
+
case "--max-diff-pixel-ratio":
|
|
503
|
+
options.maxDiffPixelRatio = parseFloat(args[++i]);
|
|
504
|
+
break;
|
|
505
|
+
case "--mask-selectors":
|
|
506
|
+
options.maskSelectors = args[++i].split(",");
|
|
507
|
+
break;
|
|
508
|
+
case "--no-mask":
|
|
509
|
+
options.noMask = true;
|
|
510
|
+
break;
|
|
511
|
+
case "--page-health-metrics":
|
|
512
|
+
options.pageHealthMetrics = true;
|
|
513
|
+
break;
|
|
514
|
+
case "--a11y":
|
|
515
|
+
options.a11y = true;
|
|
516
|
+
break;
|
|
517
|
+
case "--a11y-tags":
|
|
518
|
+
options.a11yTags = args[++i].split(",");
|
|
519
|
+
break;
|
|
472
520
|
case "--build-index":
|
|
473
521
|
options.buildIndex = true;
|
|
474
522
|
break;
|
|
@@ -478,6 +526,9 @@ async function main() {
|
|
|
478
526
|
case "--index-status":
|
|
479
527
|
options.indexStatus = true;
|
|
480
528
|
break;
|
|
529
|
+
case "--recommend-tests":
|
|
530
|
+
options.recommendTests = true;
|
|
531
|
+
break;
|
|
481
532
|
case "--mcp":
|
|
482
533
|
options.mcp = true;
|
|
483
534
|
break;
|
|
@@ -598,6 +649,16 @@ async function main() {
|
|
|
598
649
|
concurrency: options.pageHealthConcurrency,
|
|
599
650
|
checkInteractive: options.checkInteractive,
|
|
600
651
|
updateBaseline: options.updateBaseline,
|
|
652
|
+
// v3.10.0
|
|
653
|
+
screenshotSelector: options.screenshotSelector,
|
|
654
|
+
maxDiffPixels: options.maxDiffPixels,
|
|
655
|
+
maxDiffPixelRatio: options.maxDiffPixelRatio,
|
|
656
|
+
noMask: options.noMask,
|
|
657
|
+
maskSelectors: options.maskSelectors,
|
|
658
|
+
metrics: options.pageHealthMetrics,
|
|
659
|
+
cwvThresholds: options.cwvThresholds,
|
|
660
|
+
a11y: options.a11y,
|
|
661
|
+
a11yTags: options.a11yTags,
|
|
601
662
|
});
|
|
602
663
|
|
|
603
664
|
if (options.json) {
|
|
@@ -672,6 +733,29 @@ async function main() {
|
|
|
672
733
|
process.exit(0);
|
|
673
734
|
}
|
|
674
735
|
|
|
736
|
+
// v3.9.0: 智能测试推荐
|
|
737
|
+
if (options.recommendTests) {
|
|
738
|
+
const { recommendTests, formatRecommendations, formatRecommendationsJson } = await import("../dist/index.js");
|
|
739
|
+
const changedFiles = options.files?.map((f) => resolve(options.projectDir, f));
|
|
740
|
+
|
|
741
|
+
const result = await recommendTests({
|
|
742
|
+
projectDir: options.projectDir,
|
|
743
|
+
changedFiles,
|
|
744
|
+
staged: options.staged,
|
|
745
|
+
diffRange: options.diffRange,
|
|
746
|
+
autoScope: options.autoScope,
|
|
747
|
+
minPriority: 1,
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
if (options.json) {
|
|
751
|
+
console.log(JSON.stringify(formatRecommendationsJson(result), null, 2));
|
|
752
|
+
} else {
|
|
753
|
+
console.log(formatRecommendations(result));
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
process.exit(result.uncoveredChanges.length > 0 ? 1 : 0);
|
|
757
|
+
}
|
|
758
|
+
|
|
675
759
|
// v3.7.0: 建立项目索引
|
|
676
760
|
if (options.buildIndex) {
|
|
677
761
|
console.log(pc.cyan("📦 正在建立项目索引..."));
|
package/bin/fg-lsp.js
CHANGED
|
@@ -27,7 +27,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
27
27
|
} else if (arg === "--severity" || arg === "-s") {
|
|
28
28
|
minSeverity = args[++i] ?? "suggestion";
|
|
29
29
|
} else if (arg === "--help" || arg === "-h") {
|
|
30
|
-
console.log(`Frontend Guardian LSP Server v3.
|
|
30
|
+
console.log(`Frontend Guardian LSP Server v3.10.0
|
|
31
31
|
|
|
32
32
|
Usage: fg-lsp [options]
|
|
33
33
|
|
package/bin/fg-server.js
CHANGED
|
@@ -10,7 +10,7 @@ import { DashboardServer } from "../dist/index.js";
|
|
|
10
10
|
|
|
11
11
|
function showHelp() {
|
|
12
12
|
console.log(`
|
|
13
|
-
Frontend Guardian Dashboard Server v3.
|
|
13
|
+
Frontend Guardian Dashboard Server v3.10.0
|
|
14
14
|
|
|
15
15
|
Usage:
|
|
16
16
|
fg-server [options]
|
|
@@ -62,7 +62,7 @@ async function main() {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
console.log(pc.cyan("Frontend Guardian Dashboard Server"));
|
|
65
|
-
console.log(pc.gray(` Version: 3.
|
|
65
|
+
console.log(pc.gray(` Version: 3.10.0`));
|
|
66
66
|
console.log("");
|
|
67
67
|
|
|
68
68
|
const server = new DashboardServer({
|
package/dist/index.d.ts
CHANGED
|
@@ -17,8 +17,8 @@ export type { DiagnosticResult, IncrementalDiagnosticOptions } from "./ide/incre
|
|
|
17
17
|
export { createIncrementalDiagnostic, IncrementalDiagnostic } from "./ide/incremental-diagnostic.js";
|
|
18
18
|
export type { LSPServerOptions } from "./ide/lsp-server.js";
|
|
19
19
|
export { runLSPServer } from "./ide/lsp-server.js";
|
|
20
|
-
export type { CheckedRoute, ExternalTool, ExternalToolResult, PageHealthOptions, PageHealthResult, } from "./integrations/index.js";
|
|
21
|
-
export { allExternalTools, eslintIntegration, formatPageHealthJson, formatPageHealthReport, isPlaywrightAvailable, playwrightIntegration, runAllExternalTools, runPageHealthCheck, stylelintIntegration, toScanResult, typescriptIntegration, uploadPageHealthResult, } from "./integrations/index.js";
|
|
20
|
+
export type { CheckedRoute, CoreWebVitalsResult, CWVThresholds, ExternalTool, ExternalToolResult, PageHealthOptions, PageHealthResult, VisualRegressionOptions, VisualRegressionResult, } from "./integrations/index.js";
|
|
21
|
+
export { allExternalTools, axeViolationsToIssues, checkCWVThresholds, compareScreenshotsPixel, eslintIntegration, extractCoreWebVitals, formatCoreWebVitals, formatPageHealthJson, formatPageHealthReport, getBaselinePath, getCurrentScreenshotPath, getDiffImagePath, isAxeCoreAvailable, isLighthouseAvailable, isPixelmatchAvailable, isPlaywrightAvailable, isPngjsAvailable, playwrightIntegration, runAllExternalTools, runLighthouseForUrl, runPageHealthCheck, safeRouteName, stylelintIntegration, toScanResult, typescriptIntegration, uploadPageHealthResult, } from "./integrations/index.js";
|
|
22
22
|
export type { MCPServerOptions } from "./mcp/mcp-server.js";
|
|
23
23
|
export { runMCPServer } from "./mcp/mcp-server.js";
|
|
24
24
|
export { getToolDefinitions } from "./mcp/tools.js";
|
|
@@ -79,6 +79,8 @@ export type { UploadConfig, UploadResult } from "./utils/report-uploader.js";
|
|
|
79
79
|
export { detectUploadConfig, uploadReport } from "./utils/report-uploader.js";
|
|
80
80
|
export type { Framework, ParsedRoutes } from "./utils/route-parser.js";
|
|
81
81
|
export { detectRouteFramework, findRouteFiles, parseAllRoutes, parseNextJsRoutes, parseNuxtRoutes, parseReactRouterConfig, parseRoutes, parseTaroRoutes, parseUniAppRoutes, parseVueRouterConfig, } from "./utils/route-parser.js";
|
|
82
|
+
export type { RecommendTestsOptions, RecommendTestsResult, TestRecommendation } from "./utils/test-recommender.js";
|
|
83
|
+
export { formatRecommendations, formatRecommendationsJson, recommendTests, } from "./utils/test-recommender.js";
|
|
82
84
|
export type { PackageScanResult, WorkspaceScanOptions, WorkspaceScanResult, WorkspaceSummary, } from "./utils/workspace-scanner.js";
|
|
83
85
|
export { formatWorkspaceJson, formatWorkspaceReport, scanWorkspace } from "./utils/workspace-scanner.js";
|
|
84
86
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACR,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EACH,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,eAAe,GAClB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEtG,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACrG,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACR,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EACH,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,eAAe,GAClB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEtG,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACrG,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACR,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACR,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,UAAU,GACb,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EACR,YAAY,EACZ,gBAAgB,EAChB,GAAG,EACH,SAAS,IAAI,aAAa,EAC1B,UAAU,EACV,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACH,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,qBAAqB,EACrB,uBAAuB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACR,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACrB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnG,YAAY,EACR,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,SAAS,GACZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACnH,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE3G,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EACH,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EACH,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9E,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACH,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEnH,OAAO,EACH,qBAAqB,EACrB,yBAAyB,EACzB,cAAc,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACR,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 导出所有公共 API
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.scanWorkspace = exports.formatWorkspaceReport = exports.formatWorkspaceJson = exports.parseVueRouterConfig = exports.parseUniAppRoutes = exports.parseTaroRoutes = exports.parseRoutes = exports.parseReactRouterConfig = exports.parseNuxtRoutes = exports.parseNextJsRoutes = exports.parseAllRoutes = exports.findRouteFiles = exports.detectRouteFramework = exports.uploadReport = exports.detectUploadConfig = exports.detectProjectMeta = exports.GitLabMRPublisher = exports.GitHubPRPublisher = exports.detectPublisherConfig = exports.createPublisher = exports.autoPublishComment = exports.sendNotifications = exports.detectNotificationConfig = exports.buildNotificationPayload = void 0;
|
|
7
|
+
exports.componentRules = exports.a11yRules = exports.RuleRegistry = exports.createRegistry = exports.getToolDefinitions = exports.runMCPServer = exports.uploadPageHealthResult = exports.typescriptIntegration = exports.toScanResult = exports.stylelintIntegration = exports.safeRouteName = exports.runPageHealthCheck = exports.runLighthouseForUrl = exports.runAllExternalTools = exports.playwrightIntegration = exports.isPngjsAvailable = exports.isPlaywrightAvailable = exports.isPixelmatchAvailable = exports.isLighthouseAvailable = exports.isAxeCoreAvailable = exports.getDiffImagePath = exports.getCurrentScreenshotPath = exports.getBaselinePath = exports.formatPageHealthReport = exports.formatPageHealthJson = exports.formatCoreWebVitals = exports.extractCoreWebVitals = exports.eslintIntegration = exports.compareScreenshotsPixel = exports.checkCWVThresholds = exports.axeViolationsToIssues = exports.allExternalTools = exports.runLSPServer = exports.IncrementalDiagnostic = exports.createIncrementalDiagnostic = exports.generateSarif = exports.formatSarif = exports.isGuardianComment = exports.generatePRCommentSummary = exports.generatePRComment = exports.COMMENT_MARKER = exports.writeJobSummary = exports.isGitHubActions = exports.formatIssuesAnnotations = exports.formatIssueAnnotation = exports.formatAllAnnotations = exports.RuleEngine = exports.createEngine = exports.ProjectIndexer = exports.SmartCache = void 0;
|
|
8
|
+
exports.watchProject = exports.FileWatcher = exports.formatE2EGapReport = exports.formatE2EGapJson = exports.detectE2EGaps = exports.uploadToDashboardServer = exports.detectDashboardConfig = exports.generateDashboard = exports.loadConfig = exports.getAdaptiveConcurrency = exports.saveComplianceReport = exports.registerComplianceMapping = exports.getComplianceMapping = exports.generateComplianceReport = exports.complianceReportToMarkdown = exports.getJSXTagName = exports.getFileExt = exports.parseCodeowners = exports.matchOwner = exports.loadCodeowners = exports.findCodeowners = exports.CodeownersParser = exports.generateCIConfig = exports.detectCIProvider = exports.toBaselineIssue = exports.saveBaseline = exports.loadBaselineAsync = exports.loadBaseline = exports.generateBaseline = exports.downloadBaseline = exports.compareWithBaseline = exports.BaselineManager = exports.walkAST = exports.parseAST = exports.hasImport = exports.getImports = exports.generateAIFixSuggestions = exports.detectAIConfig = exports.AIFixSuggester = exports.DashboardServer = exports.generateDashboardHtml = exports.svelteRules = exports.securityRules = exports.platformRules = exports.performanceRules = exports.namingRules = exports.i18nRules = exports.hooksRules = exports.e2eRules = exports.crossFileRules = void 0;
|
|
9
|
+
exports.scanWorkspace = exports.formatWorkspaceReport = exports.formatWorkspaceJson = exports.recommendTests = exports.formatRecommendationsJson = exports.formatRecommendations = exports.parseVueRouterConfig = exports.parseUniAppRoutes = exports.parseTaroRoutes = exports.parseRoutes = exports.parseReactRouterConfig = exports.parseNuxtRoutes = exports.parseNextJsRoutes = exports.parseAllRoutes = exports.findRouteFiles = exports.detectRouteFramework = exports.uploadReport = exports.detectUploadConfig = exports.detectProjectMeta = exports.GitLabMRPublisher = exports.GitHubPRPublisher = exports.detectPublisherConfig = exports.createPublisher = exports.autoPublishComment = exports.sendNotifications = exports.detectNotificationConfig = exports.buildNotificationPayload = exports.detectMonorepo = exports.analyzeCrossPackageDeps = exports.initConfig = exports.generateDefaultConfig = exports.HistoryReport = exports.formatHistoryCompareJson = exports.formatHistoryCompare = exports.compareHistoryReports = exports.uninstallGitHooks = exports.installGitHooks = exports.hasGitHook = exports.detectHusky = exports.runFixBot = exports.detectFixBotConfig = void 0;
|
|
10
10
|
var cache_js_1 = require("./engine/cache.js");
|
|
11
11
|
Object.defineProperty(exports, "SmartCache", { enumerable: true, get: function () { return cache_js_1.SmartCache; } });
|
|
12
12
|
// v3.7.0: Incremental Index & Impact Analysis
|
|
@@ -41,13 +41,27 @@ Object.defineProperty(exports, "runLSPServer", { enumerable: true, get: function
|
|
|
41
41
|
// Phase 4: 外部工具集成
|
|
42
42
|
var index_js_1 = require("./integrations/index.js");
|
|
43
43
|
Object.defineProperty(exports, "allExternalTools", { enumerable: true, get: function () { return index_js_1.allExternalTools; } });
|
|
44
|
+
Object.defineProperty(exports, "axeViolationsToIssues", { enumerable: true, get: function () { return index_js_1.axeViolationsToIssues; } });
|
|
45
|
+
Object.defineProperty(exports, "checkCWVThresholds", { enumerable: true, get: function () { return index_js_1.checkCWVThresholds; } });
|
|
46
|
+
Object.defineProperty(exports, "compareScreenshotsPixel", { enumerable: true, get: function () { return index_js_1.compareScreenshotsPixel; } });
|
|
44
47
|
Object.defineProperty(exports, "eslintIntegration", { enumerable: true, get: function () { return index_js_1.eslintIntegration; } });
|
|
48
|
+
Object.defineProperty(exports, "extractCoreWebVitals", { enumerable: true, get: function () { return index_js_1.extractCoreWebVitals; } });
|
|
49
|
+
Object.defineProperty(exports, "formatCoreWebVitals", { enumerable: true, get: function () { return index_js_1.formatCoreWebVitals; } });
|
|
45
50
|
Object.defineProperty(exports, "formatPageHealthJson", { enumerable: true, get: function () { return index_js_1.formatPageHealthJson; } });
|
|
46
51
|
Object.defineProperty(exports, "formatPageHealthReport", { enumerable: true, get: function () { return index_js_1.formatPageHealthReport; } });
|
|
52
|
+
Object.defineProperty(exports, "getBaselinePath", { enumerable: true, get: function () { return index_js_1.getBaselinePath; } });
|
|
53
|
+
Object.defineProperty(exports, "getCurrentScreenshotPath", { enumerable: true, get: function () { return index_js_1.getCurrentScreenshotPath; } });
|
|
54
|
+
Object.defineProperty(exports, "getDiffImagePath", { enumerable: true, get: function () { return index_js_1.getDiffImagePath; } });
|
|
55
|
+
Object.defineProperty(exports, "isAxeCoreAvailable", { enumerable: true, get: function () { return index_js_1.isAxeCoreAvailable; } });
|
|
56
|
+
Object.defineProperty(exports, "isLighthouseAvailable", { enumerable: true, get: function () { return index_js_1.isLighthouseAvailable; } });
|
|
57
|
+
Object.defineProperty(exports, "isPixelmatchAvailable", { enumerable: true, get: function () { return index_js_1.isPixelmatchAvailable; } });
|
|
47
58
|
Object.defineProperty(exports, "isPlaywrightAvailable", { enumerable: true, get: function () { return index_js_1.isPlaywrightAvailable; } });
|
|
59
|
+
Object.defineProperty(exports, "isPngjsAvailable", { enumerable: true, get: function () { return index_js_1.isPngjsAvailable; } });
|
|
48
60
|
Object.defineProperty(exports, "playwrightIntegration", { enumerable: true, get: function () { return index_js_1.playwrightIntegration; } });
|
|
49
61
|
Object.defineProperty(exports, "runAllExternalTools", { enumerable: true, get: function () { return index_js_1.runAllExternalTools; } });
|
|
62
|
+
Object.defineProperty(exports, "runLighthouseForUrl", { enumerable: true, get: function () { return index_js_1.runLighthouseForUrl; } });
|
|
50
63
|
Object.defineProperty(exports, "runPageHealthCheck", { enumerable: true, get: function () { return index_js_1.runPageHealthCheck; } });
|
|
64
|
+
Object.defineProperty(exports, "safeRouteName", { enumerable: true, get: function () { return index_js_1.safeRouteName; } });
|
|
51
65
|
Object.defineProperty(exports, "stylelintIntegration", { enumerable: true, get: function () { return index_js_1.stylelintIntegration; } });
|
|
52
66
|
Object.defineProperty(exports, "toScanResult", { enumerable: true, get: function () { return index_js_1.toScanResult; } });
|
|
53
67
|
Object.defineProperty(exports, "typescriptIntegration", { enumerable: true, get: function () { return index_js_1.typescriptIntegration; } });
|
|
@@ -195,6 +209,11 @@ Object.defineProperty(exports, "parseRoutes", { enumerable: true, get: function
|
|
|
195
209
|
Object.defineProperty(exports, "parseTaroRoutes", { enumerable: true, get: function () { return route_parser_js_1.parseTaroRoutes; } });
|
|
196
210
|
Object.defineProperty(exports, "parseUniAppRoutes", { enumerable: true, get: function () { return route_parser_js_1.parseUniAppRoutes; } });
|
|
197
211
|
Object.defineProperty(exports, "parseVueRouterConfig", { enumerable: true, get: function () { return route_parser_js_1.parseVueRouterConfig; } });
|
|
212
|
+
// v3.9.0: Intelligent Test Recommendation
|
|
213
|
+
var test_recommender_js_1 = require("./utils/test-recommender.js");
|
|
214
|
+
Object.defineProperty(exports, "formatRecommendations", { enumerable: true, get: function () { return test_recommender_js_1.formatRecommendations; } });
|
|
215
|
+
Object.defineProperty(exports, "formatRecommendationsJson", { enumerable: true, get: function () { return test_recommender_js_1.formatRecommendationsJson; } });
|
|
216
|
+
Object.defineProperty(exports, "recommendTests", { enumerable: true, get: function () { return test_recommender_js_1.recommendTests; } });
|
|
198
217
|
var workspace_scanner_js_1 = require("./utils/workspace-scanner.js");
|
|
199
218
|
Object.defineProperty(exports, "formatWorkspaceJson", { enumerable: true, get: function () { return workspace_scanner_js_1.formatWorkspaceJson; } });
|
|
200
219
|
Object.defineProperty(exports, "formatWorkspaceReport", { enumerable: true, get: function () { return workspace_scanner_js_1.formatWorkspaceReport; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAGH,8CAA+C;AAAtC,sGAAA,UAAU,OAAA;AAOnB,8CAA8C;AAC9C,kDAAqD;AAA5C,4GAAA,cAAc,OAAA;AAEvB,0DAAmE;AAA1D,8GAAA,YAAY,OAAA;AAAE,4GAAA,UAAU,OAAA;AACjC,0CAA0C;AAC1C,0EAM2C;AALvC,4HAAA,oBAAoB,OAAA;AACpB,6HAAA,qBAAqB,OAAA;AACrB,+HAAA,uBAAuB,OAAA;AACvB,uHAAA,eAAe,OAAA;AACf,uHAAA,eAAe,OAAA;AAGnB,qBAAqB;AACrB,4DAKoC;AAJhC,+GAAA,cAAc,OAAA;AACd,kHAAA,iBAAiB,OAAA;AACjB,yHAAA,wBAAwB,OAAA;AACxB,kHAAA,iBAAiB,OAAA;AAGrB,0BAA0B;AAC1B,kDAAmE;AAA1D,uGAAA,WAAW,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEnC,iBAAiB;AACjB,6EAAqG;AAA5F,wIAAA,2BAA2B,OAAA;AAAE,kIAAA,qBAAqB,OAAA;AAE3D,qDAAmD;AAA1C,6GAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@ import { playwrightIntegration as _playwrightIntegration } from "./playwright.js
|
|
|
14
14
|
export { _playwrightIntegration as playwrightIntegration };
|
|
15
15
|
export { runPageHealthCheck, isPlaywrightAvailable, formatPageHealthReport, formatPageHealthJson, toScanResult, uploadPageHealthResult, } from "./page-health.js";
|
|
16
16
|
export type { PageHealthOptions, PageHealthResult, CheckedRoute, } from "./page-health.js";
|
|
17
|
+
export { compareScreenshotsPixel, getBaselinePath, getCurrentScreenshotPath, getDiffImagePath, isPixelmatchAvailable, isPngjsAvailable, safeRouteName, } from "../utils/visual-regression.js";
|
|
18
|
+
export type { VisualRegressionOptions, VisualRegressionResult } from "../utils/visual-regression.js";
|
|
19
|
+
export { checkCWVThresholds, extractCoreWebVitals, formatCoreWebVitals, isLighthouseAvailable, runLighthouseForUrl, } from "../utils/lighthouse-metrics.js";
|
|
20
|
+
export type { CoreWebVitalsResult, CWVThresholds } from "../utils/lighthouse-metrics.js";
|
|
21
|
+
export { axeViolationsToIssues, isAxeCoreAvailable, mapAxeImpact, runAxeOnPage } from "../utils/runtime-a11y.js";
|
|
22
|
+
export type { AxeRunResult, AxeViolation } from "../utils/runtime-a11y.js";
|
|
17
23
|
/** 所有可用的外部工具列表 */
|
|
18
24
|
export declare const allExternalTools: import("./base.js").ExternalTool[];
|
|
19
25
|
export { detectFormatter, runFormat } from "./formatter.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5F,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,IAAI,iBAAiB,EAAE,CAAC;AACnD,OAAO,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,CAAC;AAC3D,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAGzD,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,CAAC;AAG3D,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5F,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,IAAI,iBAAiB,EAAE,CAAC;AACnD,OAAO,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,CAAC;AAC3D,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAGzD,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,CAAC;AAG3D,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GAChB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjH,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE3E,kBAAkB;AAClB,eAAO,MAAM,gBAAgB,oCAK5B,CAAC;AAGF,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Phase 4: 覆盖全面化 — 集成 ESLint / TypeScript / Stylelint
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.runFormat = exports.detectFormatter = exports.allExternalTools = exports.uploadPageHealthResult = exports.toScanResult = exports.formatPageHealthJson = exports.formatPageHealthReport = exports.isPlaywrightAvailable = exports.runPageHealthCheck = exports.playwrightIntegration = exports.stylelintIntegration = exports.typescriptIntegration = exports.eslintIntegration = exports.hasPackage = exports.eslintSeverityToFg = exports.runCommand = exports.runAllExternalTools = void 0;
|
|
7
|
+
exports.runFormat = exports.detectFormatter = exports.allExternalTools = exports.runAxeOnPage = exports.mapAxeImpact = exports.isAxeCoreAvailable = exports.axeViolationsToIssues = exports.runLighthouseForUrl = exports.isLighthouseAvailable = exports.formatCoreWebVitals = exports.extractCoreWebVitals = exports.checkCWVThresholds = exports.safeRouteName = exports.isPngjsAvailable = exports.isPixelmatchAvailable = exports.getDiffImagePath = exports.getCurrentScreenshotPath = exports.getBaselinePath = exports.compareScreenshotsPixel = exports.uploadPageHealthResult = exports.toScanResult = exports.formatPageHealthJson = exports.formatPageHealthReport = exports.isPlaywrightAvailable = exports.runPageHealthCheck = exports.playwrightIntegration = exports.stylelintIntegration = exports.typescriptIntegration = exports.eslintIntegration = exports.hasPackage = exports.eslintSeverityToFg = exports.runCommand = exports.runAllExternalTools = void 0;
|
|
8
8
|
var base_js_1 = require("./base.js");
|
|
9
9
|
Object.defineProperty(exports, "runAllExternalTools", { enumerable: true, get: function () { return base_js_1.runAllExternalTools; } });
|
|
10
10
|
Object.defineProperty(exports, "runCommand", { enumerable: true, get: function () { return base_js_1.runCommand; } });
|
|
@@ -27,6 +27,26 @@ Object.defineProperty(exports, "formatPageHealthReport", { enumerable: true, get
|
|
|
27
27
|
Object.defineProperty(exports, "formatPageHealthJson", { enumerable: true, get: function () { return page_health_js_1.formatPageHealthJson; } });
|
|
28
28
|
Object.defineProperty(exports, "toScanResult", { enumerable: true, get: function () { return page_health_js_1.toScanResult; } });
|
|
29
29
|
Object.defineProperty(exports, "uploadPageHealthResult", { enumerable: true, get: function () { return page_health_js_1.uploadPageHealthResult; } });
|
|
30
|
+
// v3.10.0: 页面测试进阶工具
|
|
31
|
+
var visual_regression_js_1 = require("../utils/visual-regression.js");
|
|
32
|
+
Object.defineProperty(exports, "compareScreenshotsPixel", { enumerable: true, get: function () { return visual_regression_js_1.compareScreenshotsPixel; } });
|
|
33
|
+
Object.defineProperty(exports, "getBaselinePath", { enumerable: true, get: function () { return visual_regression_js_1.getBaselinePath; } });
|
|
34
|
+
Object.defineProperty(exports, "getCurrentScreenshotPath", { enumerable: true, get: function () { return visual_regression_js_1.getCurrentScreenshotPath; } });
|
|
35
|
+
Object.defineProperty(exports, "getDiffImagePath", { enumerable: true, get: function () { return visual_regression_js_1.getDiffImagePath; } });
|
|
36
|
+
Object.defineProperty(exports, "isPixelmatchAvailable", { enumerable: true, get: function () { return visual_regression_js_1.isPixelmatchAvailable; } });
|
|
37
|
+
Object.defineProperty(exports, "isPngjsAvailable", { enumerable: true, get: function () { return visual_regression_js_1.isPngjsAvailable; } });
|
|
38
|
+
Object.defineProperty(exports, "safeRouteName", { enumerable: true, get: function () { return visual_regression_js_1.safeRouteName; } });
|
|
39
|
+
var lighthouse_metrics_js_1 = require("../utils/lighthouse-metrics.js");
|
|
40
|
+
Object.defineProperty(exports, "checkCWVThresholds", { enumerable: true, get: function () { return lighthouse_metrics_js_1.checkCWVThresholds; } });
|
|
41
|
+
Object.defineProperty(exports, "extractCoreWebVitals", { enumerable: true, get: function () { return lighthouse_metrics_js_1.extractCoreWebVitals; } });
|
|
42
|
+
Object.defineProperty(exports, "formatCoreWebVitals", { enumerable: true, get: function () { return lighthouse_metrics_js_1.formatCoreWebVitals; } });
|
|
43
|
+
Object.defineProperty(exports, "isLighthouseAvailable", { enumerable: true, get: function () { return lighthouse_metrics_js_1.isLighthouseAvailable; } });
|
|
44
|
+
Object.defineProperty(exports, "runLighthouseForUrl", { enumerable: true, get: function () { return lighthouse_metrics_js_1.runLighthouseForUrl; } });
|
|
45
|
+
var runtime_a11y_js_1 = require("../utils/runtime-a11y.js");
|
|
46
|
+
Object.defineProperty(exports, "axeViolationsToIssues", { enumerable: true, get: function () { return runtime_a11y_js_1.axeViolationsToIssues; } });
|
|
47
|
+
Object.defineProperty(exports, "isAxeCoreAvailable", { enumerable: true, get: function () { return runtime_a11y_js_1.isAxeCoreAvailable; } });
|
|
48
|
+
Object.defineProperty(exports, "mapAxeImpact", { enumerable: true, get: function () { return runtime_a11y_js_1.mapAxeImpact; } });
|
|
49
|
+
Object.defineProperty(exports, "runAxeOnPage", { enumerable: true, get: function () { return runtime_a11y_js_1.runAxeOnPage; } });
|
|
30
50
|
/** 所有可用的外部工具列表 */
|
|
31
51
|
exports.allExternalTools = [
|
|
32
52
|
eslint_js_1.eslintIntegration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,qCAA4F;AAAnF,8GAAA,mBAAmB,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,qGAAA,UAAU,OAAA;AAExE,2CAAsE;AAIvC,kGAJD,6BAAkB,OAIA;AAHhD,mDAAkF;AAI/C,sGAJD,qCAAsB,OAIA;AAHxD,iDAA+E;AAI7C,qGAJD,mCAAqB,OAIA;AAEtD,8BAA8B;AAC9B,mDAAkF;AAC/C,sGADD,qCAAsB,OACA;AAExD,iBAAiB;AACjB,mDAO0B;AANtB,oHAAA,kBAAkB,OAAA;AAClB,uHAAA,qBAAqB,OAAA;AACrB,wHAAA,sBAAsB,OAAA;AACtB,sHAAA,oBAAoB,OAAA;AACpB,8GAAA,YAAY,OAAA;AACZ,wHAAA,sBAAsB,OAAA;AAQ1B,kBAAkB;AACL,QAAA,gBAAgB,GAAG;IAC5B,6BAAkB;IAClB,qCAAsB;IACtB,mCAAqB;IACrB,qCAAsB;CACzB,CAAC;AAEF,oBAAoB;AACpB,+CAA4D;AAAnD,+GAAA,eAAe,OAAA;AAAE,yGAAA,SAAS,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,qCAA4F;AAAnF,8GAAA,mBAAmB,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,qGAAA,UAAU,OAAA;AAExE,2CAAsE;AAIvC,kGAJD,6BAAkB,OAIA;AAHhD,mDAAkF;AAI/C,sGAJD,qCAAsB,OAIA;AAHxD,iDAA+E;AAI7C,qGAJD,mCAAqB,OAIA;AAEtD,8BAA8B;AAC9B,mDAAkF;AAC/C,sGADD,qCAAsB,OACA;AAExD,iBAAiB;AACjB,mDAO0B;AANtB,oHAAA,kBAAkB,OAAA;AAClB,uHAAA,qBAAqB,OAAA;AACrB,wHAAA,sBAAsB,OAAA;AACtB,sHAAA,oBAAoB,OAAA;AACpB,8GAAA,YAAY,OAAA;AACZ,wHAAA,sBAAsB,OAAA;AAQ1B,oBAAoB;AACpB,sEAQuC;AAPnC,+HAAA,uBAAuB,OAAA;AACvB,uHAAA,eAAe,OAAA;AACf,gIAAA,wBAAwB,OAAA;AACxB,wHAAA,gBAAgB,OAAA;AAChB,6HAAA,qBAAqB,OAAA;AACrB,wHAAA,gBAAgB,OAAA;AAChB,qHAAA,aAAa,OAAA;AAGjB,wEAMwC;AALpC,2HAAA,kBAAkB,OAAA;AAClB,6HAAA,oBAAoB,OAAA;AACpB,4HAAA,mBAAmB,OAAA;AACnB,8HAAA,qBAAqB,OAAA;AACrB,4HAAA,mBAAmB,OAAA;AAGvB,4DAAiH;AAAxG,wHAAA,qBAAqB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAAE,+GAAA,YAAY,OAAA;AAAE,+GAAA,YAAY,OAAA;AAG9E,kBAAkB;AACL,QAAA,gBAAgB,GAAG;IAC5B,6BAAkB;IAClB,qCAAsB;IACtB,mCAAqB;IACrB,qCAAsB;CACzB,CAAC;AAEF,oBAAoB;AACpB,+CAA4D;AAAnD,+GAAA,eAAe,OAAA;AAAE,yGAAA,SAAS,OAAA"}
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { type ChildProcess } from "node:child_process";
|
|
14
14
|
import type { Issue, ScanResult } from "../types.js";
|
|
15
|
+
import { type CoreWebVitalsResult } from "../utils/lighthouse-metrics.js";
|
|
16
|
+
import { type AxeViolation } from "../utils/runtime-a11y.js";
|
|
17
|
+
import { type VisualRegressionResult } from "../utils/visual-regression.js";
|
|
15
18
|
import { type DashboardClientConfig, type DashboardUploadResult } from "../utils/dashboard-client.js";
|
|
16
19
|
export interface PageHealthOptions {
|
|
17
20
|
/** 项目根目录 */
|
|
@@ -48,6 +51,30 @@ export interface PageHealthOptions {
|
|
|
48
51
|
updateBaseline?: boolean;
|
|
49
52
|
/** 基线截图目录 */
|
|
50
53
|
baselineDir?: string;
|
|
54
|
+
/** 元素级截图选择器(默认全页截图) */
|
|
55
|
+
screenshotSelector?: string;
|
|
56
|
+
/** 视觉回归最大差异像素数(默认 100) */
|
|
57
|
+
maxDiffPixels?: number;
|
|
58
|
+
/** 视觉回归最大差异像素比例(默认 0.01) */
|
|
59
|
+
maxDiffPixelRatio?: number;
|
|
60
|
+
/** 禁用动态内容遮罩 */
|
|
61
|
+
noMask?: boolean;
|
|
62
|
+
/** 额外遮罩选择器 */
|
|
63
|
+
maskSelectors?: string[];
|
|
64
|
+
/** 启用 Lighthouse Core Web Vitals */
|
|
65
|
+
metrics?: boolean;
|
|
66
|
+
/** CWV 阈值覆盖 */
|
|
67
|
+
cwvThresholds?: {
|
|
68
|
+
lcp?: number;
|
|
69
|
+
cls?: number;
|
|
70
|
+
fcp?: number;
|
|
71
|
+
ttfb?: number;
|
|
72
|
+
inp?: number;
|
|
73
|
+
};
|
|
74
|
+
/** 启用运行时无障碍检测 */
|
|
75
|
+
a11y?: boolean;
|
|
76
|
+
/** axe-core 过滤标签 */
|
|
77
|
+
a11yTags?: string[];
|
|
51
78
|
}
|
|
52
79
|
export interface CheckedRoute {
|
|
53
80
|
/** 路由路径 */
|
|
@@ -80,6 +107,12 @@ export interface CheckedRoute {
|
|
|
80
107
|
screenshotChanged?: boolean;
|
|
81
108
|
/** 基线截图路径 */
|
|
82
109
|
baselinePath?: string;
|
|
110
|
+
/** v3.10.0: 像素级视觉回归结果 */
|
|
111
|
+
visualRegression?: VisualRegressionResult;
|
|
112
|
+
/** v3.10.0: Lighthouse Core Web Vitals */
|
|
113
|
+
metrics?: CoreWebVitalsResult;
|
|
114
|
+
/** v3.10.0: axe-core 运行时无障碍问题 */
|
|
115
|
+
a11yViolations?: AxeViolation[];
|
|
83
116
|
}
|
|
84
117
|
export interface PageHealthResult {
|
|
85
118
|
/** 发现的 Issue */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-health.d.ts","sourceRoot":"","sources":["../../src/integrations/page-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEH,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC7B,MAAM,6BAA6B,CAAC;AAKrC,MAAM,WAAW,iBAAiB;IAC9B,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"page-health.d.ts","sourceRoot":"","sources":["../../src/integrations/page-health.ts"],"names":[],"mappings":"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"}
|