shaka-bundle-size 0.0.11 → 0.0.12

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.
Files changed (68) hide show
  1. package/dist/SourceMapGenerator.d.ts.map +1 -1
  2. package/dist/SourceMapGenerator.js +3 -1
  3. package/dist/SourceMapGenerator.js.map +1 -1
  4. package/dist/WebpackStatsReader.js +1 -1
  5. package/dist/WebpackStatsReader.js.map +1 -1
  6. package/dist/__tests__/BaselineComparator.test.d.ts +2 -0
  7. package/dist/__tests__/BaselineComparator.test.d.ts.map +1 -0
  8. package/dist/__tests__/BaselineComparator.test.js +269 -0
  9. package/dist/__tests__/BaselineComparator.test.js.map +1 -0
  10. package/dist/__tests__/BaselineStorage.test.d.ts +2 -0
  11. package/dist/__tests__/BaselineStorage.test.d.ts.map +1 -0
  12. package/dist/__tests__/BaselineStorage.test.js +145 -0
  13. package/dist/__tests__/BaselineStorage.test.js.map +1 -0
  14. package/dist/__tests__/BaselineWriter.test.d.ts +2 -0
  15. package/dist/__tests__/BaselineWriter.test.d.ts.map +1 -0
  16. package/dist/__tests__/BaselineWriter.test.js +169 -0
  17. package/dist/__tests__/BaselineWriter.test.js.map +1 -0
  18. package/dist/__tests__/BundleSizeChecker.test.d.ts +2 -0
  19. package/dist/__tests__/BundleSizeChecker.test.d.ts.map +1 -0
  20. package/dist/__tests__/BundleSizeChecker.test.js +276 -0
  21. package/dist/__tests__/BundleSizeChecker.test.js.map +1 -0
  22. package/dist/__tests__/ExtendedStatsGenerator.test.d.ts +2 -0
  23. package/dist/__tests__/ExtendedStatsGenerator.test.d.ts.map +1 -0
  24. package/dist/__tests__/ExtendedStatsGenerator.test.js +118 -0
  25. package/dist/__tests__/ExtendedStatsGenerator.test.js.map +1 -0
  26. package/dist/__tests__/HtmlDiffGenerator.test.d.ts +2 -0
  27. package/dist/__tests__/HtmlDiffGenerator.test.d.ts.map +1 -0
  28. package/dist/__tests__/HtmlDiffGenerator.test.js +283 -0
  29. package/dist/__tests__/HtmlDiffGenerator.test.js.map +1 -0
  30. package/dist/__tests__/RegressionDetector.test.d.ts +2 -0
  31. package/dist/__tests__/RegressionDetector.test.d.ts.map +1 -0
  32. package/dist/__tests__/RegressionDetector.test.js +227 -0
  33. package/dist/__tests__/RegressionDetector.test.js.map +1 -0
  34. package/dist/__tests__/Reporter.test.d.ts +2 -0
  35. package/dist/__tests__/Reporter.test.d.ts.map +1 -0
  36. package/dist/__tests__/Reporter.test.js +359 -0
  37. package/dist/__tests__/Reporter.test.js.map +1 -0
  38. package/dist/__tests__/SizeCalculator.test.d.ts +2 -0
  39. package/dist/__tests__/SizeCalculator.test.d.ts.map +1 -0
  40. package/dist/__tests__/SizeCalculator.test.js +172 -0
  41. package/dist/__tests__/SizeCalculator.test.js.map +1 -0
  42. package/dist/__tests__/SourceMapGenerator.test.d.ts +2 -0
  43. package/dist/__tests__/SourceMapGenerator.test.d.ts.map +1 -0
  44. package/dist/__tests__/SourceMapGenerator.test.js +242 -0
  45. package/dist/__tests__/SourceMapGenerator.test.js.map +1 -0
  46. package/dist/__tests__/WebpackStatsReader.test.d.ts +2 -0
  47. package/dist/__tests__/WebpackStatsReader.test.d.ts.map +1 -0
  48. package/dist/__tests__/WebpackStatsReader.test.js +210 -0
  49. package/dist/__tests__/WebpackStatsReader.test.js.map +1 -0
  50. package/dist/__tests__/colors.test.d.ts +2 -0
  51. package/dist/__tests__/colors.test.d.ts.map +1 -0
  52. package/dist/__tests__/colors.test.js +54 -0
  53. package/dist/__tests__/colors.test.js.map +1 -0
  54. package/dist/__tests__/config.test.d.ts +2 -0
  55. package/dist/__tests__/config.test.d.ts.map +1 -0
  56. package/dist/__tests__/config.test.js +380 -0
  57. package/dist/__tests__/config.test.js.map +1 -0
  58. package/dist/cli.js +25 -14
  59. package/dist/cli.js.map +1 -1
  60. package/dist/config.d.ts +197 -34
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +90 -18
  63. package/dist/config.js.map +1 -1
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +6 -1
  67. package/dist/index.js.map +1 -1
  68. package/package.json +7 -2
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const HtmlDiffGenerator_1 = require("../HtmlDiffGenerator");
39
+ describe('HtmlDiffGenerator', () => {
40
+ const tmpDir = path.join(__dirname, 'tmp-html-diff');
41
+ const controlDir = path.join(tmpDir, 'control');
42
+ const currentDir = path.join(tmpDir, 'current');
43
+ const outputDir = path.join(tmpDir, 'output');
44
+ const templateDir = path.join(tmpDir, 'templates');
45
+ const templatePath = path.join(templateDir, 'template.html');
46
+ const minimalTemplate = `<!DOCTYPE html>
47
+ <html>
48
+ <head>
49
+ <!--diff2html-css-->
50
+ <!--diff2html-title-->
51
+ </head>
52
+ <body>
53
+ <!--diff2html-js-ui-->
54
+ <div id="diff"><!--diff2html-diff--></div>
55
+ <script>
56
+ const targetElement = document.getElementById('diff');
57
+ const diff2htmlUi = new Diff2HtmlUI(targetElement);
58
+ //diff2html-fileListToggle
59
+ //diff2html-synchronisedScroll
60
+ //diff2html-highlightCode
61
+ </script>
62
+ </body>
63
+ </html>`;
64
+ beforeEach(() => {
65
+ fs.mkdirSync(controlDir, { recursive: true });
66
+ fs.mkdirSync(currentDir, { recursive: true });
67
+ fs.mkdirSync(outputDir, { recursive: true });
68
+ fs.mkdirSync(templateDir, { recursive: true });
69
+ fs.writeFileSync(templatePath, minimalTemplate);
70
+ });
71
+ afterEach(() => {
72
+ if (fs.existsSync(tmpDir)) {
73
+ fs.rmSync(tmpDir, { recursive: true });
74
+ }
75
+ });
76
+ describe('escapeHtml', () => {
77
+ it('escapes special HTML characters', () => {
78
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
79
+ expect(gen.escapeHtml('&')).toBe('&amp;');
80
+ expect(gen.escapeHtml('<')).toBe('&lt;');
81
+ expect(gen.escapeHtml('>')).toBe('&gt;');
82
+ expect(gen.escapeHtml('"')).toBe('&quot;');
83
+ expect(gen.escapeHtml("'")).toBe('&#039;');
84
+ });
85
+ it('escapes multiple characters in one string', () => {
86
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
87
+ expect(gen.escapeHtml('<div class="test">')).toBe('&lt;div class=&quot;test&quot;&gt;');
88
+ });
89
+ it('returns empty string unchanged', () => {
90
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
91
+ expect(gen.escapeHtml('')).toBe('');
92
+ });
93
+ });
94
+ describe('ensureDirectoryExists', () => {
95
+ it('creates directory if it does not exist', () => {
96
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
97
+ const newDir = path.join(tmpDir, 'new-dir');
98
+ gen.ensureDirectoryExists(newDir);
99
+ expect(fs.existsSync(newDir)).toBe(true);
100
+ });
101
+ });
102
+ describe('getFilesInDirectory', () => {
103
+ it('returns files in a directory', () => {
104
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
105
+ fs.writeFileSync(path.join(currentDir, 'a.json'), '{}');
106
+ fs.writeFileSync(path.join(currentDir, 'b.txt'), '');
107
+ const files = gen.getFilesInDirectory(currentDir);
108
+ expect(files).toContain('a.json');
109
+ expect(files).toContain('b.txt');
110
+ });
111
+ it('returns empty array for non-existent directory', () => {
112
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
113
+ expect(gen.getFilesInDirectory('/nonexistent')).toEqual([]);
114
+ });
115
+ });
116
+ describe('buildMetadataScript', () => {
117
+ it('includes all metadata fields', () => {
118
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
119
+ const script = gen.buildMetadataScript('config.json', {
120
+ masterCommit: 'abc1234',
121
+ branchName: 'feature/test',
122
+ currentCommit: 'def5678',
123
+ });
124
+ expect(script).toContain('config.json');
125
+ expect(script).toContain('abc1234');
126
+ expect(script).toContain('feature/test');
127
+ expect(script).toContain('def5678');
128
+ });
129
+ it('handles empty metadata', () => {
130
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
131
+ const script = gen.buildMetadataScript('file.json', {});
132
+ expect(script).toContain('file.json');
133
+ expect(script).toContain('<script>');
134
+ });
135
+ it('escapes HTML in filename', () => {
136
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
137
+ const script = gen.buildMetadataScript('<script>alert(1)</script>', {});
138
+ expect(script).not.toContain('<script>alert(1)</script>');
139
+ expect(script).toContain('&lt;script&gt;');
140
+ });
141
+ });
142
+ describe('generateUnifiedDiff', () => {
143
+ it('returns empty string for identical files', () => {
144
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
145
+ const file1 = path.join(tmpDir, 'same1.txt');
146
+ const file2 = path.join(tmpDir, 'same2.txt');
147
+ fs.writeFileSync(file1, 'same content');
148
+ fs.writeFileSync(file2, 'same content');
149
+ expect(gen.generateUnifiedDiff(file1, file2)).toBe('');
150
+ });
151
+ it('returns diff content for different files', () => {
152
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
153
+ const file1 = path.join(tmpDir, 'old.txt');
154
+ const file2 = path.join(tmpDir, 'new.txt');
155
+ fs.writeFileSync(file1, 'old content\n');
156
+ fs.writeFileSync(file2, 'new content\n');
157
+ const diff = gen.generateUnifiedDiff(file1, file2);
158
+ expect(diff.length).toBeGreaterThan(0);
159
+ });
160
+ });
161
+ describe('generateHtmlFromDiff', () => {
162
+ it('generates HTML file with diff content', () => {
163
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
164
+ const outputFile = path.join(outputDir, 'test.diff.html');
165
+ const diffContent = '--- a\n+++ b\n@@ -1 +1 @@\n-old\n+new\n';
166
+ gen.generateHtmlFromDiff(diffContent, outputFile, templatePath, {}, 'test.json');
167
+ expect(fs.existsSync(outputFile)).toBe(true);
168
+ const html = fs.readFileSync(outputFile, 'utf8');
169
+ expect(html).toContain('diff2html');
170
+ expect(html).toContain('test.json');
171
+ });
172
+ it('injects metadata script', () => {
173
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
174
+ const outputFile = path.join(outputDir, 'meta.diff.html');
175
+ const diffContent = '--- a\n+++ b\n';
176
+ gen.generateHtmlFromDiff(diffContent, outputFile, templatePath, {
177
+ masterCommit: 'abc',
178
+ branchName: 'main',
179
+ }, 'test.json');
180
+ const html = fs.readFileSync(outputFile, 'utf8');
181
+ expect(html).toContain('abc');
182
+ expect(html).toContain('main');
183
+ });
184
+ });
185
+ describe('generateSingleDiff', () => {
186
+ it('returns null when control file does not exist', () => {
187
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
188
+ fs.writeFileSync(path.join(currentDir, 'file.json'), '{}');
189
+ const result = gen.generateSingleDiff({
190
+ filename: 'file.json',
191
+ controlDir,
192
+ currentDir,
193
+ outputDir,
194
+ templatePath,
195
+ metadata: {},
196
+ });
197
+ expect(result).toBeNull();
198
+ });
199
+ it('returns null when current file does not exist', () => {
200
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
201
+ fs.writeFileSync(path.join(controlDir, 'file.json'), '{}');
202
+ const result = gen.generateSingleDiff({
203
+ filename: 'file.json',
204
+ controlDir,
205
+ currentDir,
206
+ outputDir,
207
+ templatePath,
208
+ metadata: {},
209
+ });
210
+ expect(result).toBeNull();
211
+ });
212
+ it('returns null when files are identical', () => {
213
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
214
+ fs.writeFileSync(path.join(controlDir, 'file.json'), '{"same": true}');
215
+ fs.writeFileSync(path.join(currentDir, 'file.json'), '{"same": true}');
216
+ const result = gen.generateSingleDiff({
217
+ filename: 'file.json',
218
+ controlDir,
219
+ currentDir,
220
+ outputDir,
221
+ templatePath,
222
+ metadata: {},
223
+ });
224
+ expect(result).toBeNull();
225
+ });
226
+ it('generates diff HTML when files differ', () => {
227
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
228
+ fs.writeFileSync(path.join(controlDir, 'file.json'), '{"size": 100}\n');
229
+ fs.writeFileSync(path.join(currentDir, 'file.json'), '{"size": 200}\n');
230
+ const result = gen.generateSingleDiff({
231
+ filename: 'file.json',
232
+ controlDir,
233
+ currentDir,
234
+ outputDir,
235
+ templatePath,
236
+ metadata: {},
237
+ });
238
+ expect(result).not.toBeNull();
239
+ expect(fs.existsSync(result)).toBe(true);
240
+ });
241
+ });
242
+ describe('generateDiffs', () => {
243
+ it('generates diffs for all files in current directory', () => {
244
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
245
+ fs.writeFileSync(path.join(controlDir, 'a.json'), '{"v":1}\n');
246
+ fs.writeFileSync(path.join(currentDir, 'a.json'), '{"v":2}\n');
247
+ fs.writeFileSync(path.join(controlDir, 'b.txt'), 'old\n');
248
+ fs.writeFileSync(path.join(currentDir, 'b.txt'), 'new\n');
249
+ const files = gen.generateDiffs({
250
+ controlDir,
251
+ currentDir,
252
+ outputDir,
253
+ templatePath,
254
+ });
255
+ expect(files.length).toBe(2);
256
+ });
257
+ it('creates output directory if needed', () => {
258
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
259
+ const newOutputDir = path.join(tmpDir, 'new-output');
260
+ gen.generateDiffs({
261
+ controlDir,
262
+ currentDir,
263
+ outputDir: newOutputDir,
264
+ templatePath,
265
+ });
266
+ expect(fs.existsSync(newOutputDir)).toBe(true);
267
+ });
268
+ it('returns empty array when no diffs found', () => {
269
+ const gen = new HtmlDiffGenerator_1.HtmlDiffGenerator();
270
+ // Same content in both dirs
271
+ fs.writeFileSync(path.join(controlDir, 'same.json'), '{}');
272
+ fs.writeFileSync(path.join(currentDir, 'same.json'), '{}');
273
+ const files = gen.generateDiffs({
274
+ controlDir,
275
+ currentDir,
276
+ outputDir,
277
+ templatePath,
278
+ });
279
+ expect(files).toEqual([]);
280
+ });
281
+ });
282
+ });
283
+ //# sourceMappingURL=HtmlDiffGenerator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlDiffGenerator.test.js","sourceRoot":"","sources":["../../src/__tests__/HtmlDiffGenerator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RegressionDetector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegressionDetector.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/RegressionDetector.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const RegressionDetector_1 = require("../RegressionDetector");
4
+ describe('defaultPolicy', () => {
5
+ it('returns shouldFail: true for INCREASED_SIZE', () => {
6
+ const regression = {
7
+ componentName: 'App',
8
+ type: RegressionDetector_1.RegressionType.INCREASED_SIZE,
9
+ };
10
+ const result = (0, RegressionDetector_1.defaultPolicy)(regression);
11
+ expect(result.shouldFail).toBe(true);
12
+ expect(result.message).toContain('increasedSize');
13
+ expect(result.message).toContain('App');
14
+ });
15
+ it('returns shouldFail: true for NEW_COMPONENT', () => {
16
+ const regression = {
17
+ componentName: 'NewWidget',
18
+ type: RegressionDetector_1.RegressionType.NEW_COMPONENT,
19
+ };
20
+ const result = (0, RegressionDetector_1.defaultPolicy)(regression);
21
+ expect(result.shouldFail).toBe(true);
22
+ expect(result.message).toContain('newComponent');
23
+ expect(result.message).toContain('NewWidget');
24
+ });
25
+ it('returns shouldFail: true for REMOVED_COMPONENT', () => {
26
+ const regression = {
27
+ componentName: 'OldWidget',
28
+ type: RegressionDetector_1.RegressionType.REMOVED_COMPONENT,
29
+ };
30
+ const result = (0, RegressionDetector_1.defaultPolicy)(regression);
31
+ expect(result.shouldFail).toBe(true);
32
+ expect(result.message).toContain('removedComponent');
33
+ expect(result.message).toContain('OldWidget');
34
+ });
35
+ it('returns shouldFail: true for INCREASED_CHUNKS_COUNT', () => {
36
+ const regression = {
37
+ componentName: 'Header',
38
+ type: RegressionDetector_1.RegressionType.INCREASED_CHUNKS_COUNT,
39
+ };
40
+ const result = (0, RegressionDetector_1.defaultPolicy)(regression);
41
+ expect(result.shouldFail).toBe(true);
42
+ expect(result.message).toContain('increasedChunksCount');
43
+ expect(result.message).toContain('Header');
44
+ });
45
+ });
46
+ describe('RegressionDetector', () => {
47
+ describe('createNewComponentRegression', () => {
48
+ it('creates regression for new component', () => {
49
+ const detector = new RegressionDetector_1.RegressionDetector();
50
+ const component = {
51
+ name: 'NewWidget',
52
+ chunksCount: 3,
53
+ gzipSizeKb: 50,
54
+ brotliSizeKb: 40,
55
+ };
56
+ const regression = detector.createNewComponentRegression(component);
57
+ expect(regression.componentName).toBe('NewWidget');
58
+ expect(regression.type).toBe(RegressionDetector_1.RegressionType.NEW_COMPONENT);
59
+ expect(regression.sizeKb).toBe(50);
60
+ expect(regression.chunksCount).toBe(3);
61
+ });
62
+ });
63
+ describe('createRemovedComponentRegression', () => {
64
+ it('creates regression for removed component', () => {
65
+ const detector = new RegressionDetector_1.RegressionDetector();
66
+ const component = {
67
+ name: 'OldWidget',
68
+ chunksCount: 2,
69
+ gzipSizeKb: '30.00',
70
+ brotliSizeKb: '25.00',
71
+ };
72
+ const regression = detector.createRemovedComponentRegression(component);
73
+ expect(regression.componentName).toBe('OldWidget');
74
+ expect(regression.type).toBe(RegressionDetector_1.RegressionType.REMOVED_COMPONENT);
75
+ expect(regression.sizeKb).toBe(30);
76
+ });
77
+ });
78
+ describe('createIncreasedSizeRegression', () => {
79
+ it('creates regression for size increase', () => {
80
+ const detector = new RegressionDetector_1.RegressionDetector();
81
+ const comparison = {
82
+ name: 'App',
83
+ actualSizeKb: 115,
84
+ expectedSizeKb: 100,
85
+ sizeDiffKb: 15,
86
+ actualChunksCount: 2,
87
+ expectedChunksCount: 2,
88
+ };
89
+ const regression = detector.createIncreasedSizeRegression(comparison);
90
+ expect(regression.componentName).toBe('App');
91
+ expect(regression.type).toBe(RegressionDetector_1.RegressionType.INCREASED_SIZE);
92
+ expect(regression.sizeDiffKb).toBe(15);
93
+ expect(regression.expectedSizeKb).toBe(100);
94
+ expect(regression.actualSizeKb).toBe(115);
95
+ });
96
+ });
97
+ describe('createIncreasedChunksCountRegression', () => {
98
+ it('creates regression for chunks count increase', () => {
99
+ const detector = new RegressionDetector_1.RegressionDetector();
100
+ const comparison = {
101
+ name: 'App',
102
+ actualSizeKb: 100,
103
+ expectedSizeKb: 100,
104
+ sizeDiffKb: 0,
105
+ actualChunksCount: 5,
106
+ expectedChunksCount: 3,
107
+ };
108
+ const regression = detector.createIncreasedChunksCountRegression(comparison);
109
+ expect(regression.componentName).toBe('App');
110
+ expect(regression.type).toBe(RegressionDetector_1.RegressionType.INCREASED_CHUNKS_COUNT);
111
+ expect(regression.actualChunksCount).toBe(5);
112
+ expect(regression.expectedChunksCount).toBe(3);
113
+ });
114
+ });
115
+ describe('detectRegressions', () => {
116
+ it('detects all types of regressions', () => {
117
+ const detector = new RegressionDetector_1.RegressionDetector();
118
+ const comparisonResult = {
119
+ newComponents: [
120
+ { name: 'NewComp', chunksCount: 1, gzipSizeKb: 10, brotliSizeKb: 8 },
121
+ ],
122
+ removedComponents: [
123
+ { name: 'OldComp', chunksCount: 1, gzipSizeKb: '20.00', brotliSizeKb: '15.00' },
124
+ ],
125
+ sizeChanges: [
126
+ { name: 'App', actualSizeKb: 115, expectedSizeKb: 100, sizeDiffKb: 15, actualChunksCount: 2, expectedChunksCount: 2 },
127
+ ],
128
+ chunksCountIncreases: [
129
+ { name: 'Header', actualSizeKb: 50, expectedSizeKb: 50, sizeDiffKb: 0, actualChunksCount: 4, expectedChunksCount: 2 },
130
+ ],
131
+ };
132
+ const regressions = detector.detectRegressions(comparisonResult);
133
+ expect(regressions).toHaveLength(4);
134
+ const types = regressions.map(r => r.type);
135
+ expect(types).toContain(RegressionDetector_1.RegressionType.NEW_COMPONENT);
136
+ expect(types).toContain(RegressionDetector_1.RegressionType.REMOVED_COMPONENT);
137
+ expect(types).toContain(RegressionDetector_1.RegressionType.INCREASED_SIZE);
138
+ expect(types).toContain(RegressionDetector_1.RegressionType.INCREASED_CHUNKS_COUNT);
139
+ });
140
+ it('returns empty array when no regressions', () => {
141
+ const detector = new RegressionDetector_1.RegressionDetector();
142
+ const comparisonResult = {
143
+ newComponents: [],
144
+ removedComponents: [],
145
+ sizeChanges: [],
146
+ chunksCountIncreases: [],
147
+ };
148
+ const regressions = detector.detectRegressions(comparisonResult);
149
+ expect(regressions).toHaveLength(0);
150
+ });
151
+ it('handles multiple regressions of same type', () => {
152
+ const detector = new RegressionDetector_1.RegressionDetector();
153
+ const comparisonResult = {
154
+ newComponents: [
155
+ { name: 'A', chunksCount: 1, gzipSizeKb: 5, brotliSizeKb: 4 },
156
+ { name: 'B', chunksCount: 2, gzipSizeKb: 10, brotliSizeKb: 8 },
157
+ ],
158
+ removedComponents: [],
159
+ sizeChanges: [],
160
+ chunksCountIncreases: [],
161
+ };
162
+ const regressions = detector.detectRegressions(comparisonResult);
163
+ expect(regressions).toHaveLength(2);
164
+ expect(regressions[0].componentName).toBe('A');
165
+ expect(regressions[1].componentName).toBe('B');
166
+ });
167
+ });
168
+ describe('evaluateRegression', () => {
169
+ it('uses default policy to evaluate', () => {
170
+ const detector = new RegressionDetector_1.RegressionDetector();
171
+ const regression = {
172
+ componentName: 'App',
173
+ type: RegressionDetector_1.RegressionType.INCREASED_SIZE,
174
+ };
175
+ const result = detector.evaluateRegression(regression);
176
+ expect(result.shouldFail).toBe(true);
177
+ });
178
+ it('uses custom policy when provided', () => {
179
+ const detector = new RegressionDetector_1.RegressionDetector({
180
+ policy: () => ({ shouldFail: false, message: 'Allowed' }),
181
+ });
182
+ const regression = {
183
+ componentName: 'App',
184
+ type: RegressionDetector_1.RegressionType.INCREASED_SIZE,
185
+ };
186
+ const result = detector.evaluateRegression(regression);
187
+ expect(result.shouldFail).toBe(false);
188
+ expect(result.message).toBe('Allowed');
189
+ });
190
+ });
191
+ describe('evaluateAll', () => {
192
+ it('splits regressions into failures and warnings', () => {
193
+ const detector = new RegressionDetector_1.RegressionDetector({
194
+ policy: (regression) => ({
195
+ shouldFail: regression.type === RegressionDetector_1.RegressionType.INCREASED_SIZE,
196
+ message: 'evaluated',
197
+ }),
198
+ });
199
+ const regressions = [
200
+ { componentName: 'App', type: RegressionDetector_1.RegressionType.INCREASED_SIZE },
201
+ { componentName: 'NewComp', type: RegressionDetector_1.RegressionType.NEW_COMPONENT },
202
+ { componentName: 'Header', type: RegressionDetector_1.RegressionType.INCREASED_SIZE },
203
+ ];
204
+ const result = detector.evaluateAll(regressions);
205
+ expect(result.failures).toHaveLength(2);
206
+ expect(result.warnings).toHaveLength(1);
207
+ expect(result.warnings[0].componentName).toBe('NewComp');
208
+ });
209
+ it('attaches policy message to regressions', () => {
210
+ const detector = new RegressionDetector_1.RegressionDetector({
211
+ policy: () => ({ shouldFail: true, message: 'Custom message' }),
212
+ });
213
+ const regressions = [
214
+ { componentName: 'App', type: RegressionDetector_1.RegressionType.INCREASED_SIZE },
215
+ ];
216
+ detector.evaluateAll(regressions);
217
+ expect(regressions[0].policyMessage).toBe('Custom message');
218
+ });
219
+ it('returns empty arrays for empty input', () => {
220
+ const detector = new RegressionDetector_1.RegressionDetector();
221
+ const result = detector.evaluateAll([]);
222
+ expect(result.failures).toHaveLength(0);
223
+ expect(result.warnings).toHaveLength(0);
224
+ });
225
+ });
226
+ });
227
+ //# sourceMappingURL=RegressionDetector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegressionDetector.test.js","sourceRoot":"","sources":["../../src/__tests__/RegressionDetector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Reporter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reporter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/Reporter.test.ts"],"names":[],"mappings":""}