返回 DeepSeek-Reasonix
profileAnalysis.test.ts
根目录 / desktop / electron / src / main / profileAnalysis.test.ts
1 import assert from "node:assert/strict";
2 import { test } from "node:test";
3 import { analyseProfile } from "./profileAnalysis.js";
4 import type { CpuProfile } from "./rendererDiagnostics.js";
5
6 test("profiles produce bounded app-only self-time summaries without source paths", () => {
7 const profile: CpuProfile = {
8 startTime: 0, endTime: 30_000,
9 nodes: [
10 { id: 1, callFrame: { functionName: "render", url: "reasonix://app/assets/main-abc.js", lineNumber: 12 } },
11 { id: 2, callFrame: { functionName: "secret", url: "file:///private/user.js", lineNumber: 0 } },
12 { id: 3, callFrame: { functionName: "remote", url: "https://example.com/app.js", lineNumber: 0 } },
13 ], samples: [1, 2, 1, 3], timeDeltas: [5000, 10000, 5000, 10000],
14 };
15 assert.deepEqual(analyseProfile(profile), [{ label: "render (main-abc.js:13)", selfMs: 10, samples: 2 }]);
16 assert.throws(() => analyseProfile({ ...profile, samples: Array(100_001).fill(1) }), /budget/);
17 });
18
18 lines TYPESCRIPT