trellis
Version:
Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications
64 lines • 2.32 kB
TypeScript
/**
* VCS-native test runner — executes manifest suites and records vcs:testRun ops.
*/
import type { EngineContext } from './engine-context.js';
import { type TestManifest, type TestSuiteDef } from './test-manifest.js';
export type TestRunTrigger = 'manual' | 'watch' | 'pre-promote' | 'pre-close' | 'criterion';
export interface TestRunResult {
testRunId: string;
suite?: string;
command: string;
status: 'passed' | 'failed';
output?: string;
exitCode?: number;
durationMs?: number;
opHash?: string;
}
export interface RunTestSuiteParams {
/** Working directory for the shell command (lane worktree or repo root). */
cwd: string;
/** Repo root containing `.trellis/tests.json` (defaults to `cwd`). */
manifestRoot?: string;
suiteId: string;
manifest?: TestManifest;
laneId?: string;
issueId?: string;
trigger?: TestRunTrigger;
}
export declare function executeTestCommand(opts: {
command: string;
cwd: string;
timeoutMs?: number;
}): Promise<{
status: 'passed' | 'failed';
output: string;
exitCode: number;
durationMs: number;
}>;
export declare function emitTestRunOp(ctx: EngineContext, params: {
suiteId?: string;
command: string;
status: 'passed' | 'failed';
output?: string;
exitCode?: number;
durationMs?: number;
laneId?: string;
issueId?: string;
trigger: TestRunTrigger;
}): Promise<TestRunResult>;
export declare function runTestSuite(ctx: EngineContext, params: RunTestSuiteParams): Promise<TestRunResult>;
export declare function runTestSuites(ctx: EngineContext, params: {
cwd: string;
manifestRoot?: string;
suiteIds: string[];
manifest?: TestManifest;
laneId?: string;
issueId?: string;
trigger?: TestRunTrigger;
}): Promise<TestRunResult[]>;
export declare function runPromoteRequiredTests(ctx: EngineContext, cwd: string, laneId: string, manifestRoot?: string): Promise<TestRunResult[]>;
export declare function allTestRunsPassed(results: TestRunResult[]): boolean;
/** Load manifest if present; never throws for missing file. */
export declare function tryLoadTestManifest(rootPath: string): TestManifest | null;
export declare function describeSuite(suiteId: string, suite: TestSuiteDef): string;
//# sourceMappingURL=test-runner.d.ts.map