Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,83 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { analyzeBundleScan, formatBundleScanSummary } from "./bundleScan";
|
||||
|
||||
describe("bundle scan", () => {
|
||||
it("reports actionable over-budget vendor chunks", () => {
|
||||
const result = analyzeBundleScan({
|
||||
assets: [{ name: "assets/vendor-react.abcd.js", sizeKb: 620 }],
|
||||
warnings: [
|
||||
{
|
||||
code: "PLUGIN_WARNING",
|
||||
message: "Some chunks are larger than 500 kB after minification.",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(result.budgetViolations).toEqual([
|
||||
{
|
||||
name: "assets/vendor-react.abcd.js",
|
||||
sizeKb: 620,
|
||||
thresholdKb: 500,
|
||||
budgetKind: "vendor",
|
||||
},
|
||||
]);
|
||||
expect(result.warnings[0]?.class).toBe("large-chunk");
|
||||
});
|
||||
|
||||
it("accepts chunks within explicit app, vendor and editor budgets", () => {
|
||||
const result = analyzeBundleScan({
|
||||
assets: [
|
||||
{ name: "assets/routes-dashboard.js", sizeKb: 340 },
|
||||
{ name: "assets/vendor-radix.js", sizeKb: 480 },
|
||||
{ name: "assets/monaco-editor.js", sizeKb: 840 },
|
||||
],
|
||||
});
|
||||
|
||||
expect(result.budgetViolations).toEqual([]);
|
||||
});
|
||||
|
||||
it("formats largest chunk summaries in deterministic size order", () => {
|
||||
const result = analyzeBundleScan(
|
||||
{
|
||||
assets: [
|
||||
{ name: "assets/workflow.js", sizeKb: 220 },
|
||||
{ name: "assets/vendor-react.js", sizeKb: 500 },
|
||||
{ name: "assets/editor-monaco.js", sizeKb: 500 },
|
||||
{ name: "assets/settings.js", sizeKb: 120 },
|
||||
],
|
||||
},
|
||||
{ largestChunkLimit: 3 },
|
||||
);
|
||||
|
||||
expect(result.largestChunks.map((asset) => asset.name)).toEqual([
|
||||
"assets/editor-monaco.js",
|
||||
"assets/vendor-react.js",
|
||||
"assets/workflow.js",
|
||||
]);
|
||||
expect(formatBundleScanSummary(result)).toContain("- assets/editor-monaco.js: 500 kB");
|
||||
});
|
||||
|
||||
it("keeps unknown warnings visible instead of suppressing them", () => {
|
||||
const result = analyzeBundleScan({
|
||||
assets: [{ name: "assets/app.js", sizeKb: 100 }],
|
||||
warnings: [
|
||||
{
|
||||
code: "SYNTHETIC_NEW_WARNING",
|
||||
message: "Bundler emitted a warning this helper does not know yet.",
|
||||
file: "apps/web/app/routes/dashboard.tsx",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(result.unknownWarnings).toHaveLength(1);
|
||||
expect(result.unknownWarnings[0]).toMatchObject({
|
||||
class: "unknown",
|
||||
suppressed: false,
|
||||
code: "SYNTHETIC_NEW_WARNING",
|
||||
});
|
||||
expect(formatBundleScanSummary(result)).toContain(
|
||||
"- SYNTHETIC_NEW_WARNING: Bundler emitted a warning this helper does not know yet.",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user