Compare commits

...

2 Commits

4 changed files with 23 additions and 9 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

@ -1,6 +1,6 @@
{ {
"name": "@git.zone/tstest", "name": "@git.zone/tstest",
"version": "2.2.3", "version": "2.2.4",
"private": false, "private": false,
"description": "a test utility to run tests that match test/**/*.ts", "description": "a test utility to run tests that match test/**/*.ts",
"exports": { "exports": {

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