donobu
Version:
Create browser automations with an LLM agent and replay them as Playwright scripts.
88 lines • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuitesPersistenceDonobuApi = void 0;
const SuiteNotFoundException_1 = require("../../exceptions/SuiteNotFoundException");
const SuiteMetadata_1 = require("../../models/SuiteMetadata");
const DonobuApiClient_1 = require("../DonobuApiClient");
class SuitesPersistenceDonobuApi extends DonobuApiClient_1.DonobuApiClient {
constructor(baseUrl, apiKey) {
super(baseUrl, apiKey);
}
async createSuite(suiteMetadata) {
const response = await this.jsonRequest('/v1/suites', 'POST', {
id: suiteMetadata.id,
name: suiteMetadata.name,
record: suiteMetadata,
});
if (!response.ok) {
throw new Error(`Failed to create suite: ${response.status} ${response.statusText}`);
}
}
async updateSuite(suiteMetadata) {
const suiteId = encodeURIComponent(suiteMetadata.id);
const response = await this.jsonRequest(`/v1/suites/${suiteId}`, 'PUT', {
id: suiteMetadata.id,
name: suiteMetadata.name,
record: suiteMetadata,
});
if (response.status === 404) {
throw SuiteNotFoundException_1.SuiteNotFoundException.forId(suiteMetadata.id);
}
if (!response.ok) {
throw new Error(`Failed to update suite: ${response.status} ${response.statusText}`);
}
}
async getSuiteById(suiteId) {
const response = await this.jsonRequest(`/v1/suites/${encodeURIComponent(suiteId)}`, 'GET');
if (response.status === 404) {
throw SuiteNotFoundException_1.SuiteNotFoundException.forId(suiteId);
}
if (!response.ok) {
throw new Error(`Failed to get suite: ${response.status} ${response.statusText}`);
}
const json = (await response.json());
return SuiteMetadata_1.SuiteMetadataSchema.parse(json.record);
}
async getSuites(query) {
const params = new URLSearchParams();
if (query.name) {
params.set('name', query.name);
}
if (query.partialName) {
params.set('partial_name', query.partialName);
}
if (query.sortBy) {
params.set('sort_by', query.sortBy);
}
if (query.sortOrder) {
params.set('sort_order', query.sortOrder);
}
if (query.limit) {
params.set('limit', query.limit.toString());
}
if (query.pageToken) {
params.set('pageToken', query.pageToken);
}
const qs = params.toString();
const path = `/v1/suites${qs ? `?${qs}` : ''}`;
const response = await this.jsonRequest(path, 'GET');
if (!response.ok) {
throw new Error(`Failed to list suites: ${response.status} ${response.statusText}`);
}
const json = (await response.json());
return {
items: json.items.map((item) => SuiteMetadata_1.SuiteMetadataSchema.parse(item)),
nextPageToken: json.nextPageToken,
};
}
async deleteSuite(suiteId) {
// The Donobu API sets the suiteId to null for all tests associated with the
// suite, via a DB FK constraint.
const response = await this.jsonRequest(`/v1/suites/${encodeURIComponent(suiteId)}`, 'DELETE');
if (!response.ok) {
throw new Error(`Failed to delete suite: ${response.status} ${response.statusText}`);
}
}
}
exports.SuitesPersistenceDonobuApi = SuitesPersistenceDonobuApi;
//# sourceMappingURL=SuitesPersistenceDonobuApi.js.map