UNPKG

tdpw

Version:

CLI tool for uploading Playwright test reports to TestDino platform with TestDino storage support

116 lines 4.52 kB
"use strict"; /** * Core types and interfaces for TestDino CLI */ Object.defineProperty(exports, "__esModule", { value: true }); exports.stringToBoolean = exports.ExitCode = exports.UsageLimitError = exports.AuthenticationError = exports.FileSystemError = exports.NetworkError = exports.ValidationError = exports.ConfigurationError = exports.BaseError = exports.ConfigSchema = exports.CLIOptionsSchema = void 0; const zod_1 = require("zod"); // CLI Options Schema exports.CLIOptionsSchema = zod_1.z.object({ reportDirectory: zod_1.z.string().min(1, 'Report directory is required'), token: zod_1.z.string().min(1, 'API token is required'), uploadImages: zod_1.z.boolean().optional().default(false), uploadVideos: zod_1.z.boolean().optional().default(false), uploadHtml: zod_1.z.boolean().optional().default(false), uploadTraces: zod_1.z.boolean().optional().default(false), uploadFiles: zod_1.z.boolean().optional().default(false), uploadFullJson: zod_1.z.boolean().optional().default(false), jsonReport: zod_1.z.string().optional(), htmlReport: zod_1.z.string().optional(), traceDir: zod_1.z.string().optional(), verbose: zod_1.z.boolean().optional().default(false), environment: zod_1.z.string().optional().default('unknown'), }); // Configuration Schema exports.ConfigSchema = zod_1.z.object({ apiUrl: zod_1.z.string().url(), token: zod_1.z.string().min(1), uploadImages: zod_1.z.boolean().default(false), uploadVideos: zod_1.z.boolean().default(false), uploadHtml: zod_1.z.boolean().default(false), uploadTraces: zod_1.z.boolean().default(false), uploadFiles: zod_1.z.boolean().default(false), uploadFullJson: zod_1.z.boolean().default(false), verbose: zod_1.z.boolean().default(false), // Target environment tag for upload metadata environment: zod_1.z.string().default('unknown'), // Performance and upload settings batchSize: zod_1.z.number().min(1).max(20).default(5), maxConcurrentUploads: zod_1.z.number().min(1).max(50).default(10), uploadTimeout: zod_1.z.number().min(5000).max(300000).default(60000), retryAttempts: zod_1.z.number().min(1).max(10).default(3), }); // Error Types class BaseError extends Error { code; cause; constructor(message, code, cause) { super(message); this.name = this.constructor.name; this.code = code; if (cause !== undefined) { this.cause = cause; } Error.captureStackTrace(this, this.constructor); } } exports.BaseError = BaseError; class ConfigurationError extends BaseError { constructor(message, cause) { super(message, 'CONFIG_ERROR', cause); } } exports.ConfigurationError = ConfigurationError; class ValidationError extends BaseError { constructor(message, cause) { super(message, 'VALIDATION_ERROR', cause); } } exports.ValidationError = ValidationError; class NetworkError extends BaseError { constructor(message, cause) { super(message, 'NETWORK_ERROR', cause); } } exports.NetworkError = NetworkError; class FileSystemError extends BaseError { constructor(message, cause) { super(message, 'FILESYSTEM_ERROR', cause); } } exports.FileSystemError = FileSystemError; class AuthenticationError extends BaseError { constructor(message, cause) { super(message, 'AUTH_ERROR', cause); } } exports.AuthenticationError = AuthenticationError; /** * Error thrown when monthly test case limit is exceeded */ class UsageLimitError extends BaseError { data; constructor(message, data, cause) { super(message, 'USAGE_LIMIT_EXCEEDED', cause); this.data = data; } } exports.UsageLimitError = UsageLimitError; // Exit Codes var ExitCode; (function (ExitCode) { ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS"; ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR"; ExitCode[ExitCode["AUTHENTICATION_ERROR"] = 2] = "AUTHENTICATION_ERROR"; ExitCode[ExitCode["FILE_NOT_FOUND_ERROR"] = 3] = "FILE_NOT_FOUND_ERROR"; ExitCode[ExitCode["NETWORK_ERROR"] = 4] = "NETWORK_ERROR"; ExitCode[ExitCode["USAGE_LIMIT_ERROR"] = 5] = "USAGE_LIMIT_ERROR"; })(ExitCode || (exports.ExitCode = ExitCode = {})); // Utility function to convert string to boolean const stringToBoolean = (value) => { if (!value) return false; return ['true', '1', 'yes', 'on'].includes(value.toLowerCase()); }; exports.stringToBoolean = stringToBoolean; //# sourceMappingURL=index.js.map