UNPKG

testgenius-ai

Version:

🚀 TestGenius AI - The Ultimate E2E Testing Framework for Everyone | No Coding Required • AI-Powered Automation • Beautiful Reports • Zero Complexity

192 lines 6.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.LogLevel = void 0; const chalk_1 = __importDefault(require("chalk")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); var LogLevel; (function (LogLevel) { LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG"; LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARN"] = 2] = "WARN"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; LogLevel[LogLevel["SILENT"] = 4] = "SILENT"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { constructor(config = {}) { this.currentTestId = ''; this.logFile = ''; this.config = { level: LogLevel.INFO, enableConsole: true, enableFile: false, // Disabled by default for simplicity logDir: 'logs', includeTimestamp: true, includeTestId: true, maxFileSize: 10, // 10MB maxFiles: 5, ...config }; this.initializeLogFile(); } initializeLogFile() { if (this.config.enableFile) { try { fs_extra_1.default.ensureDirSync(this.config.logDir); const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); this.logFile = path_1.default.join(this.config.logDir, `testgenius-${timestamp}.log`); } catch (error) { console.warn('Could not initialize log file:', error); this.config.enableFile = false; } } } setTestId(testId) { this.currentTestId = testId; } formatMessage(level, message) { let formatted = ''; if (this.config.includeTimestamp) { formatted += `[${new Date().toLocaleString()}] `; } formatted += `[${level}] `; if (this.config.includeTestId && this.currentTestId) { formatted += `[${this.currentTestId}] `; } formatted += message; return formatted; } async writeToFile(message) { if (!this.config.enableFile || !this.logFile) return; try { await fs_extra_1.default.appendFile(this.logFile, message + '\n'); } catch (error) { console.warn('Could not write to log file:', error); } } debug(message, ...args) { if (this.config.level <= LogLevel.DEBUG) { const formattedMessage = this.formatMessage('DEBUG', message); if (this.config.enableConsole) { console.log(chalk_1.default.gray(formattedMessage), ...args); } this.writeToFile(formattedMessage); } } info(message, ...args) { if (this.config.level <= LogLevel.INFO) { const formattedMessage = this.formatMessage('INFO', message); if (this.config.enableConsole) { console.log(chalk_1.default.blue(formattedMessage), ...args); } this.writeToFile(formattedMessage); } } warn(message, ...args) { if (this.config.level <= LogLevel.WARN) { const formattedMessage = this.formatMessage('WARN', message); if (this.config.enableConsole) { console.log(chalk_1.default.yellow(formattedMessage), ...args); } this.writeToFile(formattedMessage); } } error(message, ...args) { if (this.config.level <= LogLevel.ERROR) { const formattedMessage = this.formatMessage('ERROR', message); if (this.config.enableConsole) { console.log(chalk_1.default.red(formattedMessage), ...args); } this.writeToFile(formattedMessage); } } success(message, ...args) { if (this.config.level <= LogLevel.INFO) { const formattedMessage = this.formatMessage('SUCCESS', message); if (this.config.enableConsole) { console.log(chalk_1.default.green(formattedMessage), ...args); } this.writeToFile(formattedMessage); } } // Test-specific logging methods testStart(testId, testName) { this.setTestId(testId); this.info(`Starting test: ${testName} (${testId})`); } testStep(stepNumber, description) { this.info(`Step ${stepNumber}: ${description}`); } testSuccess(testId, duration) { this.success(`Test ${testId} completed successfully in ${duration}ms`); } testFailure(testId, error, duration) { this.error(`Test ${testId} failed after ${duration}ms: ${error}`); } // Browser-specific logging methods browserNavigation(url) { this.info(`🌐 Navigating to: ${url}`); } browserScreenshot(path) { this.info(`📸 Screenshot saved: ${path}`); } // AI-specific logging methods aiRequest(prompt) { this.debug(`🤖 AI Request: ${prompt.substring(0, 100)}...`); } aiResponse(response) { this.debug(`🤖 AI Response: ${response.substring(0, 100)}...`); } aiError(error) { this.error(`🤖 AI Error: ${error}`); } // Configuration methods updateConfig(newConfig) { this.config = { ...this.config, ...newConfig }; if (newConfig.enableFile && !this.config.enableFile) { this.initializeLogFile(); } } getConfig() { return { ...this.config }; } // Simple file management methods async getLogFiles() { if (!this.config.enableFile || !this.config.logDir) { return []; } try { const files = await fs_extra_1.default.readdir(this.config.logDir); return files .filter(file => file.startsWith('testgenius-') && file.endsWith('.log')) .map(file => path_1.default.join(this.config.logDir, file)); } catch (error) { console.warn('Could not read log directory:', error); return []; } } async clearLogs() { if (!this.config.enableFile || !this.config.logDir) { return; } try { const files = await this.getLogFiles(); for (const file of files) { await fs_extra_1.default.remove(file); } console.log(`🗑️ Cleared ${files.length} log files`); } catch (error) { console.warn('Could not clear log files:', error); } } } exports.Logger = Logger; //# sourceMappingURL=Logger.js.map