donobu
Version:
Create browser automations with an LLM agent and replay them as Playwright scripts.
36 lines • 2.08 kB
TypeScript
import type { CreateSuite } from '../models/CreateSuite';
import type { PaginatedResult } from '../models/PaginatedResult';
import type { SuiteMetadata, SuitesQuery } from '../models/SuiteMetadata';
import type { SuitesPersistenceRegistry } from '../persistence/suites/SuitesPersistenceRegistry';
import type { TestsPersistenceRegistry } from '../persistence/tests/TestsPersistenceRegistry';
export declare class SuitesManager {
private readonly suitesPersistenceRegistry;
private readonly testsPersistenceRegistry;
constructor(suitesPersistenceRegistry: SuitesPersistenceRegistry, testsPersistenceRegistry: TestsPersistenceRegistry);
createSuite(params: CreateSuite): Promise<SuiteMetadata>;
getSuiteById(suiteId: string): Promise<SuiteMetadata>;
getSuites(query: SuitesQuery): Promise<PaginatedResult<SuiteMetadata>>;
/**
* Update a suite in the persistence layer where it exists.
* Iterates layers, updates in the first one that has it, ignores
* SuiteNotFoundExceptions from others.
*/
updateSuite(suiteMetadata: SuiteMetadata): Promise<void>;
/**
* Delete a suite from all persistence layers.
*
* Orphans tests that belong to the suite first, then deletes the suite
* row. The orphan pass must run before the suite delete: SQLite has an
* ON DELETE SET NULL FK on test_metadata.suite_id, which clears the
* column synchronously inside DELETE FROM suite_metadata. If we deleted
* first, the subsequent getTests({ suiteId }) filter would find zero
* rows in the SQLite layer (column already null) and skip the JSON-blob
* rewrite, leaving each affected test's `metadata.suiteId` pointed at a
* suite that no longer exists. Orphaning first rewrites both the SQL
* column and the JSON blob via updateTest, so the FK cascade is then a
* no-op. Non-DB layers (Volatile, S3, GCS) have no FK and rely on this
* pass for the cascade behavior in either ordering.
*/
deleteSuite(suiteId: string): Promise<void>;
}
//# sourceMappingURL=SuitesManager.d.ts.map