/** * Vitest lens for test running and coverage */ import { BaseLens } from '../base/BaseLens.js'; import { LensResult, ExecuteResult } from '../../types/index.js'; /** * Vitest test status */ type TestStatus = 'pass' | 'fail' | 'skip' | 'pending' | 'todo'; /** * Vitest assertion/test result */ interface VitestTest { name: string; status: TestStatus; duration?: number; error?: { message?: string; stack?: string; expected?: string; actual?: string; }; } /** * Vitest test file result */ interface VitestTestFile { name: string; status: 'pass' | 'fail'; duration?: number; assertionResults?: VitestTest[]; tasks?: VitestTask[]; } /** * Vitest task (test or suite) */ interface VitestTask { id: string; name: string; type: 'test' | 'suite'; mode: 'run' | 'skip' | 'only' | 'todo'; file?: { name: string; }; result?: { state: 'pass' | 'fail' | 'skip'; duration?: number; error?: { message?: string; stack?: string; }; }; tasks?: VitestTask[]; } /** * Vitest JSON reporter output format */ interface VitestOutput { numTotalTestSuites?: number; numPassedTestSuites?: number; numFailedTestSuites?: number; numPendingTestSuites?: number; numTotalTests?: number; numPassedTests?: number; numFailedTests?: number; numPendingTests?: number; numTodoTests?: number; startTime?: number; success?: boolean; testResults?: VitestTestFile[]; } /** * Lens for Vitest test runner */ export declare class VitestLens extends BaseLens { readonly name = "vitest"; readonly description = "Vitest test runner"; readonly languages: string[]; readonly supportedTools: string[]; readonly requirements: import("../..").LensRequirements; private pathMapper?; /** * Calculate quality score (0-100) from Vitest results * * Scoring algorithm: * - Base score from test pass rate: (passedTests / totalTests) × 100 * - Penalty for skipped tests: -0.5 per skipped test percentage * - Bonus for high coverage: +10 if coverage > 80%, +5 if > 60% * - Floor at 0, cap at 100 */ static calculateQualityScore(result: LensResult): number; /** * Parse Vitest JSON output */ parse(output: ExecuteResult): VitestOutput; /** * Parse text output when JSON is not available */ private parseTextOutput; /** * Format Vitest results to standard format */ format(parsed: VitestOutput): LensResult; /** * Read coverage data from vitest coverage output * Looks for coverage/coverage-final.json in the cwd */ private readCoverageData; /** * Build structured coverage data from istanbul/v8 coverage map */ private buildCoverageData; /** * Extract tests from Vitest task tree */ private extractTestsFromTasks; /** * Map Vitest task state to test status */ private mapTaskState; /** * Clean error message */ private cleanMessage; /** * Get empty results structure */ private getEmptyResults; /** * Normalize results */ private normalizeResults; /** * Get or create path mapper */ private getPathMapper; /** * Override execute to ensure JSON format */ execute(): Promise; } export {}; //# sourceMappingURL=VitestLens.d.ts.map