/** * Repo test manifest — `.trellis/tests.json` * * Suites define shell commands; issues reference suite ids on criteria. * Promote gates read `promote.require`. */ export interface TestSuiteDef { description?: string; command: string; timeoutMs?: number; /** When `browser`, runs via desk relay + extension instead of shell exec. */ kind?: 'shell' | 'browser'; /** Path relative to repo root for browser verify steps JSON. */ stepsFile?: string; } /** Template for auto-attached acceptance criteria on `issue start`. */ export interface CriterionTemplate { description: string; command?: string; suite?: string; } /** Reviewer / QA ladder — suite ids for static check then e2e. */ export interface ReviewLadderConfig { check?: string; e2e?: string; } export interface TestManifest { version: number; defaultSuite?: string; suites: Record; promote?: { require?: string[]; }; /** Reviewer ladder: check suite then e2e suite (see resolveReviewLadder). */ review?: ReviewLadderConfig; /** Base criteria added on `issue start` when the issue has none yet. */ issueStart?: { default?: CriterionTemplate[]; }; /** Extra criteria per issue label (e.g. needs-e2e → e2e suite). */ issueLabels?: Record; } export interface ResolvedReviewLadder { checkSuiteId: string; e2eSuiteId: string; check: TestSuiteDef; e2e: TestSuiteDef; } export declare function testManifestPath(rootPath: string): string; export declare function loadTestManifest(rootPath: string): TestManifest | null; export declare function requireTestManifest(rootPath: string): TestManifest; export declare function resolveSuite(manifest: TestManifest, suiteId: string): TestSuiteDef; export declare function suiteTimeoutMs(suite: TestSuiteDef): number; export declare function listSuiteIds(manifest: TestManifest): string[]; /** Suites required before lane promote when --require-test is set. */ export declare function getPromoteRequiredSuites(manifest: TestManifest): string[]; /** * Resolve reviewer ladder suite ids from manifest.review or command heuristics. */ export declare function resolveReviewLadder(manifest: TestManifest): ResolvedReviewLadder; export declare function resolveCriterionCommand(manifest: TestManifest | null, criterion: { command?: string; suite?: string; }): string | undefined; /** Deduped criteria templates for a new issue from manifest defaults + labels. */ export declare function resolveIssueStartCriteria(manifest: TestManifest | null, labels: string[]): CriterionTemplate[]; export declare const DEFAULT_TEST_MANIFEST: TestManifest; /** Write `.trellis/tests.json` when missing (e.g. on `trellis init`). */ export declare function ensureDefaultTestManifest(rootPath: string, template?: TestManifest): boolean; //# sourceMappingURL=test-manifest.d.ts.map