tstest/changelog.md

21 KiB

Changelog

2025-05-26 - 2.3.0 - feat(cli)

Add '--version' option and warn against global tstest usage in the tstest project

  • Introduced a new '--version' CLI flag that prints the version from package.json
  • Added logic in ts/index.ts to detect if tstest is run globally within its own project and issue a warning
  • Added .claude/settings.local.json to configure allowed permissions for various commands

2025-05-26 - 2.2.6 - fix(tstest)

Improve timeout warning timer management and summary output formatting in the test runner.

  • Removed the global timeoutWarningTimer and replaced it with local warning timers in runInNode and runInChrome methods.
  • Added warnings when test files run for over one minute if no timeout is specified.
  • Ensured proper clearing of warning timers on successful completion or timeout.
  • Enhanced quiet mode summary output to clearly display passed and failed test counts.

2025-05-26 - 2.2.5 - fix(protocol)

Fix inline timing metadata parsing and enhance test coverage for performance metrics and timing edge cases

  • Updated the protocol parser to correctly parse inline key:value pairs while excluding prefixed formats (META:, SKIP:, TODO:, EVENT:)
  • Added new tests for performance metrics, timing edge cases, and protocol timing to verify accurate timing capture and retry handling
  • Expanded documentation in readme.hints.md to detail the updated timing implementation and parser fixes

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)

Update npm package scope and documentation to use '@git.zone' instead of '@gitzone', and add local settings configuration.

  • Changed npm package links and source repository URLs in readme from '@gitzone/tstest' to '@git.zone/tstest'.
  • Updated comments in ts/tstest.plugins.ts to reflect the correct '@git.zone' scope.
  • Added .claude/settings.local.json file with local permission settings.

2025-05-26 - 2.2.2 - fix(config)

Cleanup project configuration by adding local CLAUDE settings and removing redundant license files

  • Added .claude/settings.local.json with updated permissions for CLI and build tasks
  • Removed license and license.md files to streamline repository content

2025-05-26 - 2.2.1 - fix(repo configuration)

Update repository metadata to use 'git.zone' naming and add local permission settings

  • Changed githost from 'gitlab.com' to 'code.foss.global' and gitscope from 'gitzone' to 'git.zone' in npmextra.json
  • Updated npm package name from '@gitzone/tstest' to '@git.zone/tstest' in npmextra.json and readme.md
  • Added .claude/settings.local.json with new permission configuration

2025-05-26 - 2.2.0 - feat(watch mode)

Add watch mode support with CLI options and enhanced documentation

  • Introduce '--watch' (or '-w') and '--watch-ignore' CLI flags for automatic test re-runs
  • Integrate @push.rocks/smartchok for file watching with 300ms debouncing
  • Update readme.md and readme.hints.md with detailed instructions and examples for watch mode
  • Add a demo test file (test/watch-demo/test.demo.ts) to illustrate the new feature
  • Add smartchok dependency in package.json

2025-05-26 - 2.1.0 - feat(core)

Implement Protocol V2 with enhanced settings and lifecycle hooks

  • Migrated to Protocol V2 using Unicode markers and structured metadata with new ts_tapbundle_protocol module
  • Refactored TAP parser/emitter to support improved protocol parsing and error reporting
  • Integrated global settings via tap.settings() and lifecycle hooks (beforeAll/afterAll, beforeEach/afterEach)
  • Enhanced expect wrapper with diff generation for clearer assertion failures
  • Updated test loader to automatically run 00init.ts for proper test configuration
  • Revised documentation (readme.hints.md, readme.plan.md) to reflect current implementation status and remaining work

2025-05-25 - 2.0.0 - BREAKING CHANGE(protocol)

Introduce protocol v2 implementation and update build configuration with revised build order, new tspublish files, and enhanced documentation

  • Added ts_tapbundle_protocol directory with isomorphic implementation for protocol v2
  • Updated readme.hints.md and readme.plan.md to explain the complete replacement of the v1 protocol and new build process
  • Revised build order in tspublish.json files across ts, ts_tapbundle, ts_tapbundle_node, and ts_tapbundle_protocol
  • Introduced .claude/settings.local.json with updated permission settings for CLI and build tools

2025-05-24 - 1.11.5 - fix(tstest)

Fix timeout handling to correctly evaluate TAP results after killing the test process.

  • Added call to evaluateFinalResult() after killing the process in runInNode to ensure final TAP output is processed.

2025-05-24 - 1.11.4 - fix(logging)

Improve warning logging and add permission settings file

  • Replace multiple logger.error calls with logger.warning for tests running over 1 minute
  • Add warning method in tstest logger to display warning messages consistently
  • Introduce .claude/settings.local.json to configure allowed permissions

2025-05-24 - 1.11.3 - fix(tstest)

Add timeout warning for long-running tests and introduce local settings configuration

  • Add .claude/settings.local.json with permission configuration for local development
  • Implement a timeout warning timer that notifies when tests run longer than 1 minute without an explicit timeout
  • Clear the timeout warning timer upon test completion
  • Remove unused import of logPrefixes in tstest.classes.tstest.ts

2025-05-24 - 1.11.2 - fix(tstest)

Improve timeout and error handling in test execution along with TAP parser timeout logic improvements.

  • In the TAP parser, ensure that expected tests are properly set when no tests are defined to avoid false negatives on timeout.
  • Use smartshell's terminate method and fallback kill to properly stop the entire process tree on timeout.
  • Clean up browser, server, and WebSocket instances reliably even when a timeout occurs.
  • Minor improvements in log file filtering and error logging for better clarity.

2025-05-24 - 1.11.1 - fix(tstest)

Clear timeout identifiers after successful test execution and add local CLAUDE settings

  • Ensure timeout IDs are cleared when tests complete to prevent lingering timeouts
  • Add .claude/settings.local.json with updated permission settings for CLI commands

2025-05-24 - 1.11.0 - feat(cli)

Add new timeout and file range options with enhanced logfile diff logging

  • Introduce --timeout option to safeguard tests from running too long
  • Add --startFrom and --stopAt options to control the range of test files executed
  • Enhance logfile organization by automatically moving previous logs and generating diff reports for failed or changed test outputs
  • Update CLI argument parsing and internal timeout handling for both Node.js and browser tests

2025-05-24 - 1.10.2 - fix(tstest-logging)

Improve log file handling with log rotation and diff reporting

  • Add .claude/settings.local.json to configure allowed shell and web operations
  • Introduce movePreviousLogFiles function to archive previous log files when --logfile is used
  • Enhance logging to generate error copies and diff reports between current and previous logs
  • Add type annotations for console overrides in browser evaluations for improved stability

2025-05-23 - 1.10.1 - fix(tstest)

Improve file range filtering and summary logging by skipping test files outside the specified range and reporting them in the final summary.

  • Introduce runSingleTestOrSkip to check file index against startFrom/stopAt values.
  • Log skipped files with appropriate messages and add them to the summary.
  • Update the logger to include total skipped files in the test summary.
  • Add permission settings in .claude/settings.local.json to support new operations.

2025-05-23 - 1.10.0 - feat(cli)

Add --startFrom and --stopAt options to filter test files by range

  • Introduced CLI options --startFrom and --stopAt in ts/index.ts for selective test execution
  • Added validation to ensure provided range values are positive and startFrom is not greater than stopAt
  • Propagated file range filtering into test grouping in tstest.classes.tstest.ts, applying the range filter across serial and parallel groups
  • Updated usage messages to include the new options

2025-05-23 - 1.9.4 - fix(docs)

Update documentation and configuration for legal notices and CI permissions. This commit adds a new local settings file for tool permissions, refines the legal and trademark sections in the readme, and improves glob test files with clearer log messages.

  • Added .claude/settings.local.json to configure permissions for various CLI commands
  • Revised legal and trademark documentation in the readme to clarify company ownership and usage guidelines
  • Updated glob test files with improved console log messages for better clarity during test discovery

2025-05-23 - 1.9.3 - fix(tstest)

Fix test timing display issue and update TAP protocol documentation

  • Changed TAP parser regex to non-greedy pattern to correctly separate test timing metadata
  • Enhanced readme.hints.md with detailed explanation of test timing fix and planned protocol upgrades
  • Updated readme.md with improved usage examples for tapbundle and comprehensive test framework documentation
  • Added new protocol design document (readme.protocol.md) and improvement plan (readme.plan.md) outlining future changes
  • Introduced .claude/settings.local.json update for npm and CLI permissions
  • Exported protocol utilities and added tapbundle protocol implementation for future enhancements

2025-05-23 - 1.9.2 - fix(logging)

Fix log file naming to prevent collisions and update logging system documentation.

  • Enhance safe filename generation in tstest logging to preserve directory structure using double underscores.
  • Update readme.hints.md to include detailed logging system documentation and behavior.
  • Add .claude/settings.local.json with updated permissions for build tools.

2025-05-23 - 1.9.1 - fix(dependencies)

Update dependency versions and add local configuration files

  • Bump @git.zone/tsbuild from ^2.5.1 to ^2.6.3
  • Bump @types/node from ^22.15.18 to ^22.15.21
  • Bump @push.rocks/smartexpect from ^2.4.2 to ^2.5.0
  • Bump @push.rocks/smartfile from ^11.2.0 to ^11.2.3
  • Bump @push.rocks/smartlog from ^3.1.1 to ^3.1.8
  • Add .npmrc with npm registry configuration
  • Add .claude/settings.local.json for local permissions

2025-05-16 - 1.9.0 - feat(docs)

Update documentation to embed tapbundle and clarify module exports for browser compatibility; also add CI permission settings.

  • Embed tapbundle directly into tstest to simplify usage and ensure browser support.
  • Update import paths in examples from '@push.rocks/tapbundle' to '@git.zone/tstest/tapbundle'.
  • Revise the changelog to reflect version 1.8.0 improvements including enhanced test lifecycle hooks and parallel execution fixes.
  • Add .claude/settings.local.json to configure CI-related permissions and tool operations.

2025-05-16 - 1.8.0 - feat(documentation)

Enhance README with detailed test features and update local settings for build permissions.

  • Expanded the documentation to include tag filtering, parallel test execution groups, lifecycle hooks, snapshot testing, timeout control, retry logic, and test fixtures
  • Updated .claude/settings.local.json to allow additional permissions for various build and test commands

2025-05-16 - 1.7.0 - feat(tstest)

Enhance tstest with fluent API, suite grouping, tag filtering, fixture & snapshot testing, and parallel execution improvements

  • Updated npm scripts to run tests in verbose mode and support glob patterns with quotes
  • Introduced tag filtering support (--tags) in the CLI to run tests by specified tags
  • Implemented fluent syntax methods (tags, priority, retry, timeout) for defining tests and applying settings
  • Added test suite grouping with describe(), along with beforeEach and afterEach lifecycle hooks
  • Integrated a fixture system and snapshot testing via TapTools with base64 snapshot communication
  • Enhanced TAP parser regex, error collection, and snapshot handling for improved debugging
  • Improved parallel test execution by grouping files with a 'para__' pattern and running them concurrently

2025-05-15 - 1.6.0 - feat(package)

Revamp package exports and update permissions with an extensive improvement plan for test runner enhancements.

  • Replaced 'main' and 'typings' in package.json with explicit exports for improved module resolution.
  • Added .claude/settings.local.json to configure permissions for bash commands and web fetches.
  • Updated readme.plan.md with a comprehensive roadmap covering enhanced error reporting, rich test metadata, nested test suites, and advanced test features.

2025-05-15 - 1.5.0 - feat(cli)

Improve test runner configuration: update test scripts, reorganize test directories, update dependencies and add local settings for command permissions.

  • Updated package.json scripts to use pnpm and separate commands for tapbundle and tstest.
  • Reorganized tests into dedicated directories (test/tapbundle and test/tstest) and removed deprecated test files.
  • Refactored import paths and bumped dependency versions in tapbundle, tstest, and associated node utilities.
  • Added .claude/settings.local.json to configure local permissions for bash and web fetch commands.
  • Introduced ts/tspublish.json to define publish order.

2025-05-15 - 1.4.0 - feat(logging)

Display failed test console logs in default mode

  • Introduce log buffering in TsTestLogger to capture console output for failed tests
  • Enhance TapParser to collect and display error details when tests fail
  • Update README and project plan to document log improvements for debugging

2025-05-15 - 1.3.1 - fix(settings)

Add local permissions configuration and remove obsolete test output log

  • Added .claude/settings.local.json to configure allowed permissions for web fetch and bash commands
  • Removed test-output.log to eliminate accidental commit of test artifacts

2025-05-15 - 1.3.0 - feat(logger)

Improve logging output and add --logfile support for persistent logs

  • Add new .claude/settings.local.json with logging permissions configuration
  • Remove obsolete readme.plan.md
  • Introduce test/test.console.ts to capture and display console outputs during tests
  • Update CLI in ts/index.ts to replace '--log-file' with '--logfile' flag
  • Enhance TsTestLogger to support file logging, clean ANSI sequences, and improved JSON output
  • Forward TAP protocol logs to testConsoleOutput in TapParser for better console distinction

2025-05-15 - 1.2.0 - feat(logging)

Improve logging output, CLI option parsing, and test report formatting.

  • Added a centralized TsTestLogger with support for multiple verbosity levels, JSON output, and file logging (TODO).
  • Integrated new logger into CLI parsing, TapParser, TapCombinator, and TsTest classes to ensure consistent and structured output.
  • Introduced new CLI options (--quiet, --verbose, --no-color, --json, --log-file) for enhanced user control.
  • Enhanced visual design with progress indicators, detailed error aggregation, and performance summaries.
  • Updated documentation and logging code to align with improved CI/CD behavior, including skipping non-CI tests.

2025-05-15 - 1.1.0 - feat(cli)

Enhance test discovery with support for single file and glob pattern execution using improved CLI argument detection

  • Detect execution mode (file, glob, directory) based on CLI input in ts/index.ts
  • Refactor TestDirectory to load test files using SmartFile for single file and glob patterns
  • Update TsTest to pass execution mode and adjust test discovery accordingly
  • Bump dependency versions for typedserver, tsbundle, tapbundle, and others
  • Add .claude/settings.local.json for updated permissions configuration

2025-01-23 - 1.0.96 - fix(TsTest)

Fixed improper type-check for promise-like testModule defaults

  • Corrected the type-check for promise-like default exports in test modules
  • Removed unnecessary setTimeout used for async execution

2025-01-23 - 1.0.95 - fix(core)

Fix delay handling in Chrome test execution

  • Replaced smartdelay.delayFor with native Promise-based delay mechanism in runInChrome method.

2025-01-23 - 1.0.94 - fix(TsTest)

Fix test module execution by ensuring promise resolution delay

  • Added a delay to ensure promise resolution when dynamically importing test modules in the runInChrome method.

2025-01-23 - 1.0.93 - fix(tstest)

Handle globalThis.tapPromise in browser runtime evaluation

  • Added support for using globalThis.tapPromise in the browser evaluation logic.
  • Added log messages to indicate the usage of globalThis.tapPromise.

2025-01-23 - 1.0.92 - fix(core)

Improve error logging for test modules without default promise

  • Added logging to display the exported test module content when it does not export a default promise.

2025-01-23 - 1.0.91 - fix(core)

Refactored tstest class to enhance promise handling for test modules.

  • Removed .gitlab-ci.yml configuration file.
  • Updated package.json dependency versions.
  • Added a condition to handle promiselike objects in tests.

2024-04-18 - 1.0.89 to 1.0.90 - Enhancements and Bug Fixes

Multiple updates and fixes have been made.

  • Updated core components to enhance stability and performance.

2024-03-07 - 1.0.86 to 1.0.88 - Core Updates

Continued improvements and updates in the core module.

  • Applied critical fixes to enhance core stability.

2024-01-19 - 1.0.85 to 1.0.89 - Bug Fixes

Series of core updates have been implemented.

  • Addressed known bugs and improved overall system functionality.

2023-11-09 - 1.0.81 to 1.0.84 - Maintenance Updates

Maintenance updates focusing on core reliability.

  • Improved core module through systematic updates.
  • Strengthened system robustness.

2023-08-26 - 1.0.77 to 1.0.80 - Critical Fixes

Critical fixes implemented in core functionality.

  • Enhanced core processing to fix existing issues.

2023-07-13 - 1.0.75 to 1.0.76 - Stability Improvements

Stability enhancements and minor improvements.

  • Focused on ensuring a stable operational core.

2022-11-08 - 1.0.73 to 1.0.74 - Routine Fixes

Routine core fixes to address reported issues.

  • Addressed minor issues in the core module.

2022-08-03 - 1.0.71 to 1.0.72 - Core Enhancements

Enhancements applied to core systems.

  • Tweaked core components for enhanced reliability.

2022-05-04 - 1.0.69 to 1.0.70 - System Reliability Fixes

Fixes targeting the reliability of the core systems.

  • Improved system reliability through targeted core updates.

2022-03-17 - 1.0.65 to 1.0.68 - Major Core Updates

Major updates and bug fixes delivered for core components.

  • Enhanced central operations through key updates.

2022-02-15 - 1.0.60 to 1.0.64 - Core Stability Improvements

Focused updates on core stability and performance.

  • Reinforced stability through systematic core changes.

2021-11-07 - 1.0.54 to 1.0.59 - Core Fixes and Improvements

Multiple core updates aimed at fixing and improving the system.

  • Addressed outstanding bugs and improved performance in the core.

2021-08-20 - 1.0.50 to 1.0.53 - Core Functionality Updates

Continued updates to improve core functionality and user experience.

  • Implemented essential core fixes to enhance user experience.

2020-10-01 - 1.0.44 to 1.0.49 - Core System Enhancements

Critical enhancements to core systems.

  • Improved core operations and tackled existing issues.

2020-09-29 - 1.0.40 to 1.0.43 - Essential Fixes

Series of essential fixes for the core system.

  • Rectified known issues and bolstered core functionalities.

2020-07-10 - 1.0.35 to 1.0.39 - Core Function Fixes

Focused improvements and fixes for critical components.

  • Addressed critical core functions to boost system performance.

2020-06-01 - 1.0.31 to 1.0.34 - Core Updates

Updates to maintain core functionality efficacy.

  • Fixed inefficiencies and updated essential components.

2019-10-02 - 1.0.26 to 1.0.29 - Core Maintenance

Regular maintenance and updates for core reliability.

  • Addressed multiple core issues and enhanced system stability.

2019-05-28 - 1.0.20 to 1.0.25 - Core Improvements

General improvements targeting core functionalities.

  • Made systematic improvements to core processes.

2019-04-08 - 1.0.16 to 1.0.19 - Bug Squashing

Resolved numerous issues within core operations.

  • Fixed and optimized core functionalities for better performance.

2018-12-06 - 1.0.15 - Dependency Updates

Updates aimed at improving dependency management.

  • Ensured dependencies are up-to-date for optimal performance.

2018-08-14 - 1.0.14 - Test Improvement

Major improvements in testing mechanisms and logging.

  • Improved test results handling for accuracy and reliability.
  • Enhanced logging features for increased clarity.

2018-08-04 - 1.0.1 to 1.0.13 - Initial Implementation and Fixes

Initial release and critical updates focusing on core stability and functionality.

  • Implemented core components and established initial system structure.
  • Addressed key bugs and enhanced initial functionality.