fix(logging): Improve performance metrics reporting and add local permissions configuration
This commit is contained in:
		| @@ -1,5 +1,11 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  | ## 2025-05-26 - 2.2.4 - fix(logging) | ||||||
|  | Improve performance metrics reporting and add local permissions configuration | ||||||
|  |  | ||||||
|  | - Add .claude/settings.local.json to configure allowed permissions for various commands | ||||||
|  | - Update tstest logging: compute average test duration from actual durations and adjust slowest test display formatting | ||||||
|  |  | ||||||
| ## 2025-05-26 - 2.2.3 - fix(readme/ts/tstest.plugins) | ## 2025-05-26 - 2.2.3 - fix(readme/ts/tstest.plugins) | ||||||
| Update npm package scope and documentation to use '@git.zone' instead of '@gitzone', and add local settings configuration. | Update npm package scope and documentation to use '@git.zone' instead of '@gitzone', and add local settings configuration. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,6 +3,6 @@ | |||||||
|  */ |  */ | ||||||
| export const commitinfo = { | export const commitinfo = { | ||||||
|   name: '@git.zone/tstest', |   name: '@git.zone/tstest', | ||||||
|   version: '2.2.3', |   version: '2.2.4', | ||||||
|   description: 'a test utility to run tests that match test/**/*.ts' |   description: 'a test utility to run tests that match test/**/*.ts' | ||||||
| } | } | ||||||
|   | |||||||
| @@ -425,15 +425,23 @@ export class TsTestLogger { | |||||||
|      |      | ||||||
|     // Performance metrics |     // Performance metrics | ||||||
|     if (this.options.verbose) { |     if (this.options.verbose) { | ||||||
|       const avgDuration = Math.round(totalDuration / summary.totalTests); |       // Calculate metrics based on actual test durations | ||||||
|       const slowestTest = this.fileResults |       const allTests = this.fileResults.flatMap(r => r.tests); | ||||||
|         .flatMap(r => r.tests) |       const testDurations = allTests.map(t => t.duration); | ||||||
|         .sort((a, b) => b.duration - a.duration)[0]; |       const sumOfTestDurations = testDurations.reduce((sum, d) => sum + d, 0); | ||||||
|  |       const avgTestDuration = allTests.length > 0 ? Math.round(sumOfTestDurations / allTests.length) : 0; | ||||||
|  |        | ||||||
|  |       // Find slowest test (exclude 0ms durations unless all are 0) | ||||||
|  |       const nonZeroDurations = allTests.filter(t => t.duration > 0); | ||||||
|  |       const testsToSort = nonZeroDurations.length > 0 ? nonZeroDurations : allTests; | ||||||
|  |       const slowestTest = testsToSort.sort((a, b) => b.duration - a.duration)[0]; | ||||||
|        |        | ||||||
|       this.log(this.format('\n⏱️  Performance Metrics:', 'cyan')); |       this.log(this.format('\n⏱️  Performance Metrics:', 'cyan')); | ||||||
|       this.log(this.format(`   Average per test: ${avgDuration}ms`, 'white')); |       this.log(this.format(`   Average per test: ${avgTestDuration}ms`, 'white')); | ||||||
|       if (slowestTest) { |       if (slowestTest && slowestTest.duration > 0) { | ||||||
|         this.log(this.format(`   Slowest test: ${slowestTest.name} (${slowestTest.duration}ms)`, 'yellow')); |         this.log(this.format(`   Slowest test: ${slowestTest.name} (${slowestTest.duration}ms)`, 'orange')); | ||||||
|  |       } else if (allTests.length > 0) { | ||||||
|  |         this.log(this.format(`   All tests completed in <1ms`, 'dim')); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user