@vibe-validate/extractors 0.18.0-rc.1 → 0.18.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.
Files changed (43) hide show
  1. package/dist/extractors/ava/index.test.js +17 -17
  2. package/dist/extractors/ava/index.test.js.map +1 -1
  3. package/dist/extractors/eslint/index.test.js +57 -52
  4. package/dist/extractors/eslint/index.test.js.map +1 -1
  5. package/dist/extractors/generic/index.test.js +34 -0
  6. package/dist/extractors/generic/index.test.js.map +1 -1
  7. package/dist/extractors/jasmine/index.test.js +37 -30
  8. package/dist/extractors/jasmine/index.test.js.map +1 -1
  9. package/dist/extractors/jest/index.d.ts.map +1 -1
  10. package/dist/extractors/jest/index.js +1 -4
  11. package/dist/extractors/jest/index.js.map +1 -1
  12. package/dist/extractors/jest/index.test.js +45 -44
  13. package/dist/extractors/jest/index.test.js.map +1 -1
  14. package/dist/extractors/junit/index.test.js +30 -33
  15. package/dist/extractors/junit/index.test.js.map +1 -1
  16. package/dist/extractors/maven-checkstyle/index.test.js +32 -29
  17. package/dist/extractors/maven-checkstyle/index.test.js.map +1 -1
  18. package/dist/extractors/maven-compiler/index.test.js +31 -26
  19. package/dist/extractors/maven-compiler/index.test.js.map +1 -1
  20. package/dist/extractors/maven-surefire/index.test.js +26 -24
  21. package/dist/extractors/maven-surefire/index.test.js.map +1 -1
  22. package/dist/extractors/mocha/index.test.js +27 -22
  23. package/dist/extractors/mocha/index.test.js.map +1 -1
  24. package/dist/extractors/playwright/index.test.js +26 -21
  25. package/dist/extractors/playwright/index.test.js.map +1 -1
  26. package/dist/extractors/tap/index.test.js +13 -10
  27. package/dist/extractors/tap/index.test.js.map +1 -1
  28. package/dist/extractors/typescript/index.test.js +52 -43
  29. package/dist/extractors/typescript/index.test.js.map +1 -1
  30. package/dist/extractors/vitest/index.d.ts.map +1 -1
  31. package/dist/extractors/vitest/index.js +71 -30
  32. package/dist/extractors/vitest/index.js.map +1 -1
  33. package/dist/extractors/vitest/index.test.js +103 -59
  34. package/dist/extractors/vitest/index.test.js.map +1 -1
  35. package/dist/test/helpers/extractor-test-helpers.d.ts +196 -0
  36. package/dist/test/helpers/extractor-test-helpers.d.ts.map +1 -0
  37. package/dist/test/helpers/extractor-test-helpers.js +238 -0
  38. package/dist/test/helpers/extractor-test-helpers.js.map +1 -0
  39. package/dist/test/helpers/max-errors-helper.d.ts +62 -0
  40. package/dist/test/helpers/max-errors-helper.d.ts.map +1 -0
  41. package/dist/test/helpers/max-errors-helper.js +75 -0
  42. package/dist/test/helpers/max-errors-helper.js.map +1 -0
  43. package/package.json +6 -2
@@ -6,21 +6,24 @@
6
6
  * @package @vibe-validate/extractors
7
7
  */
8
8
  import { describe, it, expect } from 'vitest';
9
+ import { expectDetection, expectEmptyExtraction, expectErrorObject, expectExtractionResult, expectPluginMetadata, } from '../../test/helpers/extractor-test-helpers.js';
9
10
  import typescriptPlugin from './index.js';
10
- const { extract, detect } = typescriptPlugin;
11
+ const { extract } = typescriptPlugin;
11
12
  describe('TypeScript Extractor Plugin', () => {
12
13
  describe('detect', () => {
13
14
  it('should detect TypeScript errors with high confidence', () => {
14
- const output = `src/index.ts(10,5): error TS2322: Type 'string' is not assignable to type 'number'.`;
15
- const result = detect(output);
16
- expect(result.confidence).toBe(95);
17
- expect(result.patterns).toContain('error TS#### pattern');
18
- expect(result.reason).toContain('TypeScript compiler');
15
+ expectDetection(typescriptPlugin, `src/index.ts(10,5): error TS2322: Type 'string' is not assignable to type 'number'.`, {
16
+ confidence: 95,
17
+ patterns: ['error TS#### pattern'],
18
+ reasonContains: 'TypeScript compiler',
19
+ });
20
+ expect(typescriptPlugin).toBeDefined();
19
21
  });
20
22
  it('should not detect non-TypeScript output', () => {
21
- const output = `Some random text without TypeScript errors`;
22
- const result = detect(output);
23
- expect(result.confidence).toBe(0);
23
+ expectDetection(typescriptPlugin, 'Some random text without TypeScript errors', {
24
+ confidence: 0,
25
+ });
26
+ expect(typescriptPlugin).toBeDefined();
24
27
  });
25
28
  });
26
29
  describe('extract', () => {
@@ -29,17 +32,19 @@ describe('TypeScript Extractor Plugin', () => {
29
32
  src/index.ts(10,5): error TS2322: Type 'string' is not assignable to type 'number'.
30
33
  `.trim();
31
34
  const result = extract(output);
32
- expect(result.errors).toHaveLength(1);
33
- expect(result.errors[0]).toEqual({
35
+ expect(result).toBeDefined();
36
+ expectExtractionResult(result, {
37
+ errorCount: 1,
38
+ summaryPattern: '1 type error(s), 0 warning(s)',
39
+ });
40
+ expectErrorObject(result.errors[0], {
34
41
  file: 'src/index.ts',
35
42
  line: 10,
36
43
  column: 5,
37
44
  severity: 'error',
38
45
  code: 'TS2322',
39
- message: "Type 'string' is not assignable to type 'number'.",
46
+ messageContains: "Type 'string' is not assignable to type 'number'.",
40
47
  });
41
- expect(result.summary).toBe('1 type error(s), 0 warning(s)');
42
- expect(result.totalErrors).toBe(1);
43
48
  });
44
49
  it('should parse multiple TypeScript errors', () => {
45
50
  const output = `
@@ -48,16 +53,22 @@ src/config.ts(25,12): error TS2304: Cannot find name 'process'.
48
53
  src/utils.ts(100,3): warning TS6133: 'unusedVar' is declared but never used.
49
54
  `.trim();
50
55
  const result = extract(output);
51
- expect(result.errors).toHaveLength(3);
52
- expect(result.summary).toBe('2 type error(s), 1 warning(s)');
53
- expect(result.totalErrors).toBe(3);
56
+ expect(result).toBeDefined();
57
+ expectExtractionResult(result, {
58
+ errorCount: 3,
59
+ summaryPattern: '2 type error(s), 1 warning(s)',
60
+ });
54
61
  // Verify first error
55
- expect(result.errors[0].file).toBe('src/index.ts');
56
- expect(result.errors[0].severity).toBe('error');
57
- expect(result.errors[0].code).toBe('TS2322');
62
+ expectErrorObject(result.errors[0], {
63
+ file: 'src/index.ts',
64
+ severity: 'error',
65
+ code: 'TS2322',
66
+ });
58
67
  // Verify warning
59
- expect(result.errors[2].severity).toBe('warning');
60
- expect(result.errors[2].code).toBe('TS6133');
68
+ expectErrorObject(result.errors[2], {
69
+ severity: 'warning',
70
+ code: 'TS6133',
71
+ });
61
72
  });
62
73
  it('should limit output to first 10 errors', () => {
63
74
  // Generate 15 errors
@@ -119,10 +130,9 @@ src/config.ts(25,12): error TS2304: Cannot find name 'process'.
119
130
  expect(result.errorSummary).toContain('src/config.ts:25:12 - TS2304:');
120
131
  });
121
132
  it('should handle empty output', () => {
133
+ expectEmptyExtraction(extract, '0 type error(s), 0 warning(s)');
134
+ // Verify guidance is present
122
135
  const result = extract('');
123
- expect(result.errors).toHaveLength(0);
124
- expect(result.summary).toBe('0 type error(s), 0 warning(s)');
125
- expect(result.totalErrors).toBe(0);
126
136
  expect(result.guidance).toBe('Fix TypeScript type errors in listed files');
127
137
  });
128
138
  it('should handle output with no matches', () => {
@@ -131,9 +141,8 @@ Some random text
131
141
  That does not match
132
142
  The TypeScript error format
133
143
  `.trim();
134
- const result = extract(output);
135
- expect(result.errors).toHaveLength(0);
136
- expect(result.summary).toBe('0 type error(s), 0 warning(s)');
144
+ expectEmptyExtraction(() => extract(output), '0 type error(s), 0 warning(s)');
145
+ expect(typescriptPlugin).toBeDefined();
137
146
  });
138
147
  it('should handle files with spaces in path', () => {
139
148
  const output = `
@@ -144,29 +153,29 @@ src/my folder/index.ts(10,5): error TS2322: Type error.
144
153
  expect(result.errors[0].file).toBe('src/my folder/index.ts');
145
154
  });
146
155
  it('should truncate errors array to MAX_ERRORS_IN_ARRAY but preserve totalErrors count', async () => {
147
- // Import the constant to verify we're using the right value
148
- const { MAX_ERRORS_IN_ARRAY } = await import('../../result-schema.js');
156
+ const { expectMaxErrorsTruncation } = await import('../../test/helpers/max-errors-helper.js');
149
157
  // Generate 15 TypeScript errors (more than MAX_ERRORS_IN_ARRAY = 10)
150
158
  const errors = Array.from({ length: 15 }, (_, i) => `src/file${i + 1}.ts(${i + 1},5): error TS2322: Type error ${i + 1}.`);
151
159
  const output = errors.join('\n');
152
160
  const result = extract(output);
153
- // totalErrors should be 15 (full count)
154
- expect(result.totalErrors).toBe(15);
155
- // errors array should be truncated to MAX_ERRORS_IN_ARRAY (10)
156
- expect(result.errors).toHaveLength(MAX_ERRORS_IN_ARRAY);
157
- expect(result.errors).toHaveLength(10);
158
- // Verify we got the first 10 errors
159
- expect(result.errors[0].file).toBe('src/file1.ts');
160
- expect(result.errors[9].file).toBe('src/file10.ts');
161
- // Summary should show full count (15)
162
- expect(result.summary).toBe('15 type error(s), 0 warning(s)');
161
+ // Verify truncation behavior (assertions in helper)
162
+ expect(result.errors.length).toBeGreaterThan(0);
163
+ await expectMaxErrorsTruncation(result, {
164
+ totalCount: 15,
165
+ firstError: 'src/file1.ts',
166
+ lastTruncatedError: 'src/file10.ts',
167
+ summaryPattern: '15 type error(s), 0 warning(s)'
168
+ });
163
169
  });
164
170
  });
165
171
  describe('plugin metadata', () => {
166
172
  it('should have correct metadata', () => {
167
- expect(typescriptPlugin.metadata.name).toBe('typescript');
168
- expect(typescriptPlugin.priority).toBe(95);
169
- expect(typescriptPlugin.hints.required).toContain('error TS');
173
+ expectPluginMetadata(typescriptPlugin, {
174
+ name: 'typescript',
175
+ priority: 95,
176
+ requiredHints: ['error TS'],
177
+ });
178
+ expect(typescriptPlugin).toBeDefined();
170
179
  });
171
180
  it('should include sample test cases', () => {
172
181
  expect(typescriptPlugin.samples).toBeDefined();
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/extractors/typescript/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/extractors/typescript/index.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/vitest/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAmoBxB;;;;;GAKG;AACH,QAAA,MAAM,YAAY,EAAE,eAiBnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/vitest/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAmrBxB;;;;;GAKG;AACH,QAAA,MAAM,YAAY,EAAE,eAiBnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -208,7 +208,7 @@ function formatFailuresOutput(failures, expected, actual) {
208
208
  if (f.sourceLine) {
209
209
  parts.push('', f.sourceLine);
210
210
  }
211
- return parts.filter(p => p).join('\n');
211
+ return parts.filter(Boolean).join('\n');
212
212
  })
213
213
  .join('\n\n');
214
214
  }
@@ -256,36 +256,79 @@ function generateGuidanceText(failureCount, expected, actual, hasTimeout) {
256
256
  return guidance;
257
257
  }
258
258
  /**
259
- * Extract runtime errors (Unhandled Rejection, ENOENT, etc.)
259
+ * Extract location from unhandled rejection stack trace
260
+ * Prefers user code locations over node:internal
260
261
  *
261
- * @param output - Full test output
262
- * @returns Test failure object if runtime error found
262
+ * @param section - Unhandled rejection section text
263
+ * @returns File path and location string
264
+ *
265
+ * @internal
263
266
  */
264
- function extractRuntimeError(output) {
265
- // Look for "Unhandled Rejection" section
266
- // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Vitest test framework runtime errors (controlled output), not user input
267
- const unhandledMatch = /⎯+\s*Unhandled Rejection\s*⎯+\s*\n\s*(Error:[^\n]+(?:\n\s*[^\n❯⎯]+)?)/.exec(output);
268
- if (!unhandledMatch) {
269
- return null;
270
- }
271
- // Error message may span multiple lines (e.g., path on next line)
272
- const errorMessage = unhandledMatch[1].trim().replaceAll(/\n\s+/g, ' ');
273
- // Extract location from stack trace (❯ function file:line:col)
274
- // File path may contain colons (e.g., node:internal/fs/promises), so match ❯ function filepath:number:number
275
- const locationMatch = /❯\s+\S+\s+([\w:/.]+):(\d+):(\d+)/.exec(output);
267
+ function extractRejectionLocation(section) {
268
+ const lines = section.split('\n');
276
269
  let file = 'unknown';
277
270
  let location = '';
278
- if (locationMatch) {
279
- file = locationMatch[1];
280
- location = `${locationMatch[1]}:${locationMatch[2]}:${locationMatch[3]}`;
271
+ let fallbackFile = '';
272
+ let fallbackLocation = '';
273
+ for (const line of lines) {
274
+ // Match ❯ marker with location (file path may contain colons, dashes, dots, slashes)
275
+ const locationMatch = /❯\s+\S+\s+([\w:/.@-]+):(\d+):(\d+)/.exec(line);
276
+ if (locationMatch) {
277
+ const filepath = locationMatch[1];
278
+ const loc = `${filepath}:${locationMatch[2]}:${locationMatch[3]}`;
279
+ // Prefer user code locations over node:internal
280
+ if (!filepath.startsWith('node:internal')) {
281
+ file = filepath;
282
+ location = loc;
283
+ break;
284
+ }
285
+ else if (!fallbackFile) {
286
+ // Save first node:internal location as fallback
287
+ fallbackFile = filepath;
288
+ fallbackLocation = loc;
289
+ }
290
+ }
281
291
  }
282
- return {
283
- file,
284
- location,
285
- testHierarchy: 'Runtime Error',
286
- errorMessage,
287
- sourceLine: ''
288
- };
292
+ // Use fallback if no user code location found
293
+ if (file === 'unknown' && fallbackFile) {
294
+ file = fallbackFile;
295
+ location = fallbackLocation;
296
+ }
297
+ return { file, location };
298
+ }
299
+ /**
300
+ * Extract runtime errors (Unhandled Rejection, ENOENT, etc.)
301
+ *
302
+ * @param output - Full test output
303
+ * @returns Array of test failure objects for all runtime errors found
304
+ */
305
+ function extractRuntimeErrors(output) {
306
+ const failures = [];
307
+ // Split output by unhandled rejection markers to find all occurrences
308
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Vitest test framework section headers (controlled output), limited line length
309
+ const rejectionSections = output.split(/⎯+\s*Unhandled Rejection\s*⎯+/);
310
+ // Skip first section (before any rejection markers)
311
+ for (let i = 1; i < rejectionSections.length; i++) {
312
+ const section = rejectionSections[i];
313
+ // Extract error type and message (first non-empty line)
314
+ // Match patterns like: "TypeError: message", "Error: message", "ReferenceError: message"
315
+ const errorMatch = /^\s*((?:Type|Reference|Range|Syntax)?Error:[^\n]+(?:\n\s*[^\n❯⎯]+)?)/.exec(section);
316
+ if (!errorMatch) {
317
+ continue;
318
+ }
319
+ // Error message may span multiple lines (e.g., path on next line)
320
+ const errorMessage = errorMatch[1].trim().replaceAll(/\n\s+/g, ' ');
321
+ // Extract location from stack trace
322
+ const { file, location } = extractRejectionLocation(section);
323
+ failures.push({
324
+ file,
325
+ location,
326
+ testHierarchy: 'Runtime Error',
327
+ errorMessage,
328
+ sourceLine: ''
329
+ });
330
+ }
331
+ return failures;
289
332
  }
290
333
  /**
291
334
  * Extract coverage threshold failures
@@ -363,10 +406,8 @@ function extract(output) {
363
406
  let hasFormat2 = false; // Track if we found Format 2 file headers
364
407
  let inDetailSection = false; // Track if we're past summary section (after "Failed Tests" separator)
365
408
  // First, check for runtime errors (Unhandled Rejection, ENOENT, etc.)
366
- const runtimeError = extractRuntimeError(output);
367
- if (runtimeError) {
368
- failures.push(runtimeError);
369
- }
409
+ const runtimeErrors = extractRuntimeErrors(output);
410
+ failures.push(...runtimeErrors);
370
411
  // Check for coverage threshold failures
371
412
  const coverageError = extractCoverageThresholdError(output);
372
413
  if (coverageError) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/vitest/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/vitest/index.ts"],"names":[],"mappings":"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"}
@@ -6,34 +6,55 @@
6
6
  * @package @vibe-validate/extractors
7
7
  */
8
8
  import { describe, it, expect } from 'vitest';
9
+ import { expectDetection, expectEmptyExtraction, expectPluginMetadata, } from '../../test/helpers/extractor-test-helpers.js';
9
10
  import vitestPlugin from './index.js';
10
- const { extract, detect } = vitestPlugin;
11
+ const { extract } = vitestPlugin;
12
+ /**
13
+ * Assert single error extraction with standard checks
14
+ * Helper to reduce test duplication for single-error test cases
15
+ *
16
+ * @param output - Test output to extract from
17
+ * @param expectedFile - Expected error file path
18
+ * @param expectedMessages - Array of message fragments to check
19
+ */
20
+ function expectSingleError(output, expectedFile, expectedMessages) {
21
+ const result = extract(output);
22
+ expect(result.errors).toHaveLength(1);
23
+ expect(result.errors[0].file).toBe(expectedFile);
24
+ for (const msg of expectedMessages) {
25
+ expect(result.errors[0].message).toContain(msg);
26
+ }
27
+ expect(result.totalErrors).toBe(1);
28
+ expect(result.summary).toBe('1 test failure(s)');
29
+ }
11
30
  describe('Vitest Extractor Plugin', () => {
12
31
  describe('detect', () => {
13
32
  it('should detect Vitest test failures with high confidence', () => {
14
- const output = `
33
+ expectDetection(vitestPlugin, `
15
34
  FAIL test/unit/config/environment.test.ts > EnvironmentConfig > should parse HTTP_PORT
16
35
  AssertionError: expected 3000 to be 9999 // Object.is equality
17
36
  ❯ test/unit/config/environment.test.ts:57:30
18
- `.trim();
19
- const result = detect(output);
20
- expect(result.confidence).toBeGreaterThanOrEqual(70);
21
- expect(result.patterns.length).toBeGreaterThan(0);
22
- expect(result.reason).toContain('Vitest');
37
+ `.trim(), {
38
+ confidence: { min: 70 },
39
+ reasonContains: 'Vitest',
40
+ });
41
+ expect(vitestPlugin).toBeDefined();
23
42
  });
24
43
  it('should detect multiple Vitest patterns with higher confidence', () => {
25
- const output = `
44
+ expectDetection(vitestPlugin, `
26
45
  ❯ test/unit/config/environment.test.ts (1)
27
46
  × should parse HTTP_PORT
28
47
  AssertionError: expected 3000 to be 9999
29
- `.trim();
30
- const result = detect(output);
31
- expect(result.confidence).toBe(90);
48
+ `.trim(), {
49
+ confidence: 90,
50
+ });
51
+ expect(vitestPlugin).toBeDefined();
32
52
  });
33
53
  it('should not detect non-Vitest output', () => {
34
- const output = `Some random text without test failures`;
35
- const result = detect(output);
36
- expect(result.confidence).toBe(0);
54
+ expectDetection(vitestPlugin, 'Some random text without test failures', {
55
+ confidence: 0,
56
+ });
57
+ expect(vitestPlugin.metadata.name).toBe('vitest'); // Explicit assertion for SonarQube
37
58
  });
38
59
  });
39
60
  describe('extract', () => {
@@ -187,10 +208,8 @@ AssertionError: expected 3000 to be 9999
187
208
  expect(result.guidance).toContain('Fix the assertion in the test file');
188
209
  });
189
210
  it('should handle empty output', () => {
190
- const result = extract('');
191
- expect(result.errors).toHaveLength(0);
192
- expect(result.summary).toBe('0 test failure(s)');
193
- expect(result.totalErrors).toBe(0);
211
+ expectEmptyExtraction(extract, '0 test failure(s)');
212
+ expect(vitestPlugin).toBeDefined();
194
213
  });
195
214
  it('should handle output with no test failures', () => {
196
215
  const output = `
@@ -201,9 +220,8 @@ AssertionError: expected 3000 to be 9999
201
220
  Test Files 3 passed (3)
202
221
  Tests 3 passed (3)
203
222
  `.trim();
204
- const result = extract(output);
205
- expect(result.errors).toHaveLength(0);
206
- expect(result.totalErrors).toBe(0);
223
+ expectEmptyExtraction(() => extract(output), '0 test failure(s)');
224
+ expect(vitestPlugin).toBeDefined();
207
225
  });
208
226
  it('should extract location from FAIL sections, not summary × lines', () => {
209
227
  // Regression test for issue where summary × lines (without location markers)
@@ -309,14 +327,11 @@ All files | 88.47 | 84.21 | 86.47 | 88.47 |
309
327
 
310
328
  ERROR: Coverage for functions (86.47%) does not meet global threshold (87%)
311
329
  `.trim();
312
- const result = extract(output);
313
- expect(result.errors).toHaveLength(1);
314
- expect(result.errors[0].file).toBe('vitest.config.ts');
315
- expect(result.errors[0].message).toContain('Coverage for functions');
316
- expect(result.errors[0].message).toContain('86.47%');
317
- expect(result.errors[0].message).toContain('87%');
318
- expect(result.totalErrors).toBe(1);
319
- expect(result.summary).toBe('1 test failure(s)');
330
+ expectSingleError(output, 'vitest.config.ts', [
331
+ 'Coverage for functions',
332
+ '86.47%',
333
+ '87%'
334
+ ]);
320
335
  });
321
336
  it('should extract Vitest worker timeout errors', () => {
322
337
  const output = `
@@ -334,14 +349,11 @@ Error: [vitest-worker]: Timeout calling "onTaskUpdate"
334
349
 
335
350
  ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
336
351
  `.trim();
337
- const result = extract(output);
338
- expect(result.errors).toHaveLength(1);
339
- expect(result.errors[0].file).toBe('vitest.config.ts');
340
- expect(result.errors[0].message).toContain('Timeout calling "onTaskUpdate"');
341
- expect(result.errors[0].message).toContain('system resource constraints');
342
- expect(result.errors[0].message).toContain('Kill background processes');
343
- expect(result.totalErrors).toBe(1);
344
- expect(result.summary).toBe('1 test failure(s)');
352
+ expectSingleError(output, 'vitest.config.ts', [
353
+ 'Timeout calling "onTaskUpdate"',
354
+ 'system resource constraints',
355
+ 'Kill background processes'
356
+ ]);
345
357
  });
346
358
  it('should extract Vitest worker timeout errors with plural "Unhandled Errors"', () => {
347
359
  const output = `
@@ -364,18 +376,49 @@ Error: [vitest-worker]: Timeout calling "onTaskUpdate"
364
376
 
365
377
  ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
366
378
  `.trim();
379
+ expectSingleError(output, 'vitest.config.ts', [
380
+ 'Timeout calling "onTaskUpdate"',
381
+ 'system resource constraints',
382
+ 'Kill background processes'
383
+ ]);
384
+ });
385
+ it('should extract multiple unhandled rejections (issue #84)', () => {
386
+ // Reproduce issue #84: Multiple unhandled promise rejections
387
+ // Test data: 7 different error types that should all be extracted
388
+ const errors = [
389
+ { type: 'TypeError', msg: 'mockImplementation is not a function', file: 'packages/cli/test/helpers/doctor-helpers.ts', line: 176, col: 24 },
390
+ { type: 'TypeError', msg: 'mockImplementation is not a function', file: 'packages/cli/test/helpers/doctor-helpers.ts', line: 176, col: 24 },
391
+ { type: 'TypeError', msg: 'mockResolvedValue is not a function', file: 'packages/cli/test/helpers/doctor-helpers.ts', line: 180, col: 32 },
392
+ { type: 'Error', msg: 'Test timeout exceeded', file: 'packages/core/test/validation.test.ts', line: 42, col: 15 },
393
+ { type: 'ReferenceError', msg: 'fetch is not defined', file: 'packages/api/test/client.test.ts', line: 88, col: 10 },
394
+ { type: 'TypeError', msg: "Cannot read property 'length' of undefined", file: 'packages/utils/test/parser.test.ts', line: 120, col: 25 },
395
+ { type: 'Error', msg: 'ENOENT: no such file or directory', file: 'packages/fs/test/operations.test.ts', line: 55, col: 18 }
396
+ ];
397
+ const rejections = errors.map(e => `⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯\n${e.type}: ${e.msg}\n ❯ fn ${e.file}:${e.line}:${e.col}\n ❯ processTicksAndRejections node:internal/process/task_queues:105:5`).join('\n\n');
398
+ const output = `RUN v2.0.5 /Users/jeff/Workspaces/vibe-validate
399
+ Test Files 93 passed (93)
400
+ Tests 1687 passed (1687)
401
+ Errors ${errors.length} errors
402
+
403
+ ⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯
404
+ Vitest caught ${errors.length} unhandled errors during the test run.
405
+
406
+ ${rejections}
407
+ ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯`;
367
408
  const result = extract(output);
368
- expect(result.errors).toHaveLength(1);
369
- expect(result.errors[0].file).toBe('vitest.config.ts');
370
- expect(result.errors[0].message).toContain('Timeout calling "onTaskUpdate"');
371
- expect(result.errors[0].message).toContain('system resource constraints');
372
- expect(result.errors[0].message).toContain('Kill background processes');
373
- expect(result.totalErrors).toBe(1);
374
- expect(result.summary).toBe('1 test failure(s)');
409
+ // CRITICAL: Must extract ALL unhandled errors
410
+ expect(result.errors).toHaveLength(errors.length);
411
+ expect(result.totalErrors).toBe(errors.length);
412
+ // Verify each error was extracted correctly
413
+ for (const [i, expected] of errors.entries()) {
414
+ expect(result.errors[i].file).toBe(expected.file);
415
+ expect(result.errors[i].line).toBe(expected.line);
416
+ expect(result.errors[i].column).toBe(expected.col);
417
+ expect(result.errors[i].message).toContain(expected.msg);
418
+ }
375
419
  });
376
420
  it('should truncate errors array to MAX_ERRORS_IN_ARRAY but preserve totalErrors count', async () => {
377
- // Import the constant to verify we're using the right value
378
- const { MAX_ERRORS_IN_ARRAY } = await import('../../result-schema.js');
421
+ const { expectMaxErrorsTruncation } = await import('../../test/helpers/max-errors-helper.js');
379
422
  // Generate 15 test failures (more than MAX_ERRORS_IN_ARRAY = 10)
380
423
  const failures = Array.from({ length: 15 }, (_, i) => `
381
424
  FAIL test/unit/file${i + 1}.test.ts > TestSuite > test ${i + 1}
@@ -384,23 +427,24 @@ AssertionError: expected ${i} to be ${i + 1}
384
427
  ${i + 10}| expect(value).toBe(${i + 1});
385
428
  `).join('\n');
386
429
  const result = extract(failures);
387
- // totalErrors should be 15 (full count)
388
- expect(result.totalErrors).toBe(15);
389
- // errors array should be truncated to MAX_ERRORS_IN_ARRAY (10)
390
- expect(result.errors).toHaveLength(MAX_ERRORS_IN_ARRAY);
391
- expect(result.errors).toHaveLength(10);
392
- // Verify we got the first 10 errors
393
- expect(result.errors[0].file).toBe('test/unit/file1.test.ts');
394
- expect(result.errors[9].file).toBe('test/unit/file10.test.ts');
395
- // Summary should show full count (15)
396
- expect(result.summary).toBe('15 test failure(s)');
430
+ // Verify truncation behavior (assertions in helper)
431
+ expect(result.errors.length).toBeGreaterThan(0);
432
+ await expectMaxErrorsTruncation(result, {
433
+ totalCount: 15,
434
+ firstError: 'test/unit/file1.test.ts',
435
+ lastTruncatedError: 'test/unit/file10.test.ts',
436
+ summaryPattern: '15 test failure(s)'
437
+ });
397
438
  });
398
439
  });
399
440
  describe('plugin metadata', () => {
400
441
  it('should have correct metadata', () => {
401
- expect(vitestPlugin.metadata.name).toBe('vitest');
402
- expect(vitestPlugin.priority).toBe(85);
403
- expect(vitestPlugin.hints.anyOf).toContain('FAIL');
442
+ expectPluginMetadata(vitestPlugin, {
443
+ name: 'vitest',
444
+ priority: 85,
445
+ anyOfHints: ['FAIL'],
446
+ });
447
+ expect(vitestPlugin).toBeDefined();
404
448
  });
405
449
  it('should include sample test cases', () => {
406
450
  expect(vitestPlugin.samples).toBeDefined();