donobu
Version:
Create browser automations with an LLM agent and replay them as Playwright scripts.
31 lines • 1.77 kB
TypeScript
/**
* @fileoverview Shared state-file helper for Donobu reporters.
*
* Each Donobu reporter (HTML, Markdown, Slack) records its intended output
* path into a single state file that the auto-heal orchestrator reads after
* merging two runs, so it can re-render every configured format at the same
* path the reporter originally chose.
*
* When multiple reporters run in the same Playwright process, each one calls
* {@link mergeStateFileEntry} in its `onEnd` hook. The helper is
* read-modify-write: it loads any previously-written state, merges this
* reporter's `donobuOutputs` entry in without clobbering sibling entries, and
* writes the result back. Synchronous fs I/O is sufficient — Playwright runs
* reporter hooks sequentially within a single JS event loop.
*/
import { type DonobuReport, type DonobuReportOutputs } from './model';
/**
* Merge a single reporter's `donobuOutputs` entry into the shared state file.
* Safe to call from multiple reporters in the same run — each reporter's
* entry is merged alongside any siblings already written.
*
* @param playwrightOutputDir - the Playwright JSON output dir (passed via
* `PLAYWRIGHT_JSON_OUTPUT_DIR`). When unset, the call is a no-op because
* we have nowhere canonical to land the state file.
* @param report - the fresh `DonobuReport` this reporter built from live events.
* Its `suites` overwrite any previous state (they're identical across
* reporters running the same test run, so either is fine).
* @param outputsEntry - the format-keyed entry this reporter is contributing.
*/
export declare function mergeStateFileEntry(playwrightOutputDir: string | undefined, report: DonobuReport, outputsEntry: DonobuReportOutputs): void;
//# sourceMappingURL=stateFile.d.ts.map