SmartTest

Changelog

All notable changes are documented here. Releases are managed with Changesets. The project follows Semantic Versioning.

[1.2.0] — minor #

A PHP and Laravel preview; live Playwright specs; CI annotations; smarttest sync as an upgrade assistant; an opt-in commit trailer; barrel pruning, a selection precision report and a lazily loaded index; and hook fixes from OpenPro's rollout. Additive under the semver policy: new adapters (phpunit, with Pest and php artisan test), "php" as an analysis language, new config keys with defaults (php, hook.trailer, reports.annotations), new flags (--live, --annotations, --no-annotations, sync --apply), a new command (hook trailer) and new optional --json fields; nothing frozen changes. Some selections shrink (barrels, a branch's first push, Laravel routes), and Playwright specs that only target a remote https:// baseURL are no longer run unless --live is given. The persisted index and graph change format and are rebuilt once after the upgrade. Run smarttest sync to see what the upgrade proposes for your setup, and smarttest hook install again to update an installed hook.

Added: Laravel routes (PHP preview) #

Added: CI annotations #

Added: smarttest sync proposes upgrades #

Added: live Playwright specs #

Added: commit trailer #

Changed: hooks #

Changed: barrel and re-export pruning #

Added: selection precision in smarttest benchmark #

Added: PHP (preview) #

Performance #

[1.1.1] — patch #

Fixed #

[1.1.0] — minor #

Angular; smarttest audit, which measures missed tests instead of assuming none; a Python preview (pytest and unittest); lockfile changes selected by package; and fixes found by the audits and by an adopting project's hooks. Additive under the semver policy: new adapters (angular, pytest, unittest), runners[].project and python in the config schema, new commands and flags (audit, --runner), and "python" as an analysis language; nothing frozen changes. Some selections grow (Angular templates and stylesheets, Wasp load-time code, files a type-checking runner compiles), some shrink (dependency updates), a hook now stops the commit when SmartTest is not installed, and run no longer stops before any test runs when SmartTest hits a fault. Python files are analysed by default; python: { enabled: false } turns that off. Run smarttest hook install again to update an installed hook.

Added: Python (preview) #

Added: smarttest audit measures selection #

Added: lockfile changes select by package #

Added: the hook budget explains itself #

Added: // smarttest-loads: for computed imports #

Added: --runner <name> #

Fixed: a test no change could select #

Fixed: Yarn's own files are not project source #

Fixed: tests that share a name are counted one by one #

Fixed: faults end in a full run, never in a smaller selection or a pass #

Added: load-flaky failures told apart in benchmark #

Fixed: commit and push hooks #

Fixed: Angular templates and styles selected no test #

Added: Angular CLI projects run through ng test #

[1.0.2] — patch #

An audit of 1.0.1 (two soundness oracles on the six adopting projects, four reproduction-driven reviews) found ways a run could pass while the suite failed, and ways a change could skip a test it affects. Each is fixed with a test that fails without the fix. Under the semver policy these are bug fixes: some selections grow, and some runs that passed now fail because the suite really failed. No contract changes; explain --json gains an optional loadedBy field.

Fixed: a run passed while the suite failed #

Fixed: a change skipped a test it affects #

Performance #

[1.0.1] — patch #

The first projects on 1.0.0 (Galdia, LeadsIt, four OpenPro repositories) showed one selection bug and three smaller ones. No contract changes.

Fixed #

[1.0.0] — stable #

1.0.0 is the first release on npm, as @tkmremi/smarttest (npm install -D @tkmremi/smarttest; the command is smarttest). npm refused the bare name smarttest as too similar to smart-test. 1.0.0 freezes SmartTest's public contracts. From this release, the config schema, exit codes and --json schemas of the frozen commands only change in a major version (contracts).

Added #

Changed #

Performance #

Fixed #

[0.9.0] — hooks and interfaces #

Added #

Performance #

Fixed #

Validation limits #

Documentation #

[0.8.0] — speed #

Added #

Changed #

[0.7.0] — adaptation and end-to-end #

Added #

Fixed #

[0.6.0] — adoption #

Added #

Changed #

Fixed #

[0.5.0] — runtime evidence #

Added #

Changed #

[0.4.0] — complete graph #

Added #

[0.3.0] — precise graph #

Added #

Changed #

[0.2.0] — real-world projects #

Driven by the first real migration, LeadsIt: parity with the native runners (706/706), 88% less test time than full suites and 63% less than its per-project hook over 12 replayed commits, 0 missed failures.

Added #

Changed #

Fixed #

[0.1.0] — alpha #

The first working version of the v1.0.0 scope: 389 of 422 planned points (progress).

Added #

Changed #

[0.0.0] — foundation #

Edit this page on GitHub