fix(logging): Improve performance metrics reporting and add local permissions configuration

This commit is contained in:
Philipp Kunz 2025-05-26 05:01:06 +00:00
parent f717078558
commit d1f8652fc7
3 changed files with 22 additions and 8 deletions

View File

@ -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.

View File

@ -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'
} }

View File

@ -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'));
} }
} }