UNPKG

@craftapit/tester

Version:

A focused, LLM-powered testing framework for natural language test scenarios

87 lines (86 loc) 3.35 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatResults = formatResults; const chalk_1 = __importDefault(require("chalk")); function formatResults(results) { if ('total' in results) { return formatTestResults(results); } else { return formatTestResult(results); } } function formatTestResult(result) { const output = [ chalk_1.default.bold(`\nTest Scenario: ${result.scenarioTitle || 'Untitled'}`), `Status: ${(result.success || result.passed) ? chalk_1.default.green('PASS') : chalk_1.default.red('FAIL')}`, `Duration: ${formatDuration(result.duration)}`, `Started: ${result.startTime ? result.startTime.toLocaleTimeString() : 'N/A'}`, `Ended: ${result.endTime ? result.endTime.toLocaleTimeString() : 'N/A'}`, '\nStep Results:' ]; // Handle both step types if (result.stepResults && result.stepResults.length > 0) { result.stepResults.forEach((step, index) => { const status = step.success ? chalk_1.default.green('✓') : chalk_1.default.red('✗'); output.push(`${index + 1}. ${status} ${step.step} (${formatDuration(step.duration)})`); if (!step.success && step.error) { output.push(` ${chalk_1.default.red('Error:')} ${step.error}`); } }); } else if (result.steps && result.steps.length > 0) { result.steps.forEach((step, index) => { const status = step.status === 'passed' ? chalk_1.default.green('✓') : step.status === 'failed' ? chalk_1.default.red('✗') : chalk_1.default.yellow('⚠'); output.push(`${index + 1}. ${status} ${step.description}`); if (step.status === 'failed' && step.error) { output.push(` ${chalk_1.default.red('Error:')} ${step.error}`); } }); } // Add error if present if (result.error) { output.push(`\n${chalk_1.default.red('Error:')} ${result.error}`); } return output.join('\n'); } function formatTestResults(results) { const output = [ chalk_1.default.bold('\nTest Results Summary'), `Total Scenarios: ${results.total}`, `Passed: ${chalk_1.default.green(results.passed)}`, `Failed: ${chalk_1.default.red(results.failed)}`, `Total Duration: ${formatDuration(results.duration)}`, '\nScenario Results:' ]; results.results.forEach((result, index) => { const status = result.success ? chalk_1.default.green('PASS') : chalk_1.default.red('FAIL'); output.push(`${index + 1}. ${result.scenarioTitle}: ${status} (${formatDuration(result.duration)})`); }); return output.join('\n'); } function formatDuration(ms) { if (ms === undefined) { return '0ms'; } if (ms < 1000) { return `${ms}ms`; } else if (ms < 60000) { return `${(ms / 1000).toFixed(2)}s`; } else { const minutes = Math.floor(ms / 60000); const seconds = ((ms % 60000) / 1000).toFixed(2); return `${minutes}m ${seconds}s`; } }