export interface ParsedTestCounts { passed: number; failed: number; total: number; } export interface ParsedTestLogs { success: boolean; logs: string; testCounts?: ParsedTestCounts; /** Why the run is not a pass. Empty when it is. */ failureReasons: string[]; } export interface TestOutcomeOptions { /** * Require proof the runner ran. Off for probe scripts (--script-text), which * legitimately produce no jest report. */ requireTestReport?: boolean; } /** * Decide whether test output represents a pass, and say why when it does not. * * The single definition of the rule. Both the single-package path and the batch * path route through here — they previously carried divergent copies that * disagreed about tracebacks, so the same commit could pass one and fail the * other. */ export declare function evaluateTestOutcome(rawOutput: string, options?: TestOutcomeOptions): { success: boolean; failureReasons: string[]; }; /** * True when jest reported at all, including reporting that it found nothing. * * "Ran and found no tests" is a legitimate answer for packages that ship * without specs; "we never heard from jest" is not. Keying on the report * rather than on a test count keeps `passWithNoTests` working. */ export declare function hasTestReport(rawOutput: string): boolean; /** Count Luau tracebacks in output. */ export declare function countTracebacks(rawOutput: string): number; /** * Analyze test output for Jest failures and Luau runtime errors. * Shared by both Open Cloud log fetching and local run-in-roblox output. */ export declare function parseTestLogs(rawOutput: string, options?: TestOutcomeOptions): ParsedTestLogs; /** * Parse Jest "Tests: N failed, N passed, N total" line into structured counts. * Returns undefined if no test summary line is found. */ export declare function parseTestCounts(rawOutput: string): ParsedTestCounts | undefined; //# sourceMappingURL=test-log-parser.d.ts.map