All notable changes to this project are documented in this file, dates are the date of the version-bump commit.
- support requestBodyTarget links, $request/$generated/$state expressions, and captureFromLogs
- group changelog entries by Conventional Commits type
- add commit-msg hook enforcing Conventional Commits
- keep the trailing comma out of the TODO comment when serializing tests
- bump to v3.1.0
- add coverage for edge cases in server/param/response resolution
- Add release workflow to automate changelog updates and GitHub releases
response.schemano longer needs (or accepts in the old form) the__spectestJsonSchemawrapper. It now accepts either a Zod schema (detected via.safeParse) or a raw JSON Schema / OpenAPI 3.0/3.1 Schema Object directly.normalizeOpenApiSchemastrips OpenAPI-only keywords and converts 3.0-styleexclusiveMinimum/exclusiveMaximumbefore validating against a shared Ajv2020 instance. Suites using the old wrapper must pass the schema unwrapped.
- Negative testing and fuzz-testing support for OpenAPI-generated tests: new schema mutator generates invalid-input cases to verify the API rejects bad input, with coverage reporting.
- Outbound request throttling: rate-limit outbound calls made by the SUT server process via new config options.
- More reliable server startup: reworked start/wait logic with configurable timeouts and clearer failure modes for crash-on-boot, crash-on-signal, and slow-to-start servers.
credentials: includesupport in generated suites, and generator placeholders are now refreshed on everygeneraterun instead of being stale/cached.- A single OpenAPI
exampleis now promoted into theexamplesmap so it benefits from per-example test generation the same way multi-example operations do.
- Improved server-start reliability (config-level startup wait/health handling).
- Implemented outbound request throttling for the SUT server process.
- Added a project
CLAUDE.mdguidance file; updated the negative-testing design plan.
- Improved OpenAPI support broadly: turning
examplesinto individual generated tests, derivingdependsOn/beforeSendfromlinks, and reading thex-spectestvendor extension. - Added a
helpcommand to the CLI.
- Config filters are now passed through to suite loaders (so loader-level filtering respects CLI/config filters).
- Fixed server stop to reliably kill the spawned server process.
- Added OpenAPI spec loading support to the spectest loader (early version of first-class OpenAPI support).
- Added HTTP call recording/replay support for the SUT server process.
- Added
--test-outputformat support and additional docs. - Added Ctrl+C (SIGINT) handling for graceful cancellation of in-flight tests.
- Merged skipped-test handling into the normal execution flow.
- Test discovery now scans test directories recursively and reports the number of matching files found; nested suites use their relative path as a fallback name.
- Fixed a rounding error in the progress bar rendering.
- Increased test timeout to 60s.
composePostTestfunctions now execute sequentially instead of concurrently, fixing ordering issues for chained post-test hooks.
Major refactor release.
- Refactored the runner onto a plugin-first architecture (the basis of today's
PluginHost/onLoad/onPrepare/onFetchpipeline). - Refactored test execution into distinct phases (setup/main/teardown) with dependency-aware scheduling.
- Added a progress bar and reorganized the results summary by suite.
- Fixed response-body handling and header handling in the HTTP client.
- Fixed the
skipimplementation and included skipped tests in the summary/report. - Auto-assigns an
operationIdto test cases that don't declare one.
- Implemented
setup/teardownat both the test-case and suite level. - Replaced
axioswith Node's nativehttpmodule for outbound requests, dropping a runtime dependency.
- Improved Zod validation error formatting for clearer failure output.
- Packaging/metadata update (
package.json) — no functional changes.
- Added
dependsOnsupport so tests can declare dependencies on other operations, with basic validation and skip-cascading when a dependency is skipped or missing. - Added an optional
operationIdfield to test cases. - Test responses are now saved on pass, enabling chaining via completed-case state.
- Added a
proxyoption; addedSuite/TestCasetypes; introduced a dedicated suite loader module. - Added YAML test-suite support (
.spectest.yaml). - Added an optional server-build step and support for overriding the project root.
- Removed the
bailoption (superseded by dependency-aware scheduling); fixed a null-requestIdedge case.
- Fixed the build command and bumped the version (build-tooling fix, no user-facing feature change).
- README updates only.
- Added support for suite objects (not just arrays of test cases) and JSON test-suite files.
- Added
.cjs/.mjsimport support. - Added a
filterconfig option and suite-name extraction from file paths. - Introduced a dedicated renderer class for output; simplified CLI args parsing; minified the production bundle.
- Removed unused dependencies and leftover cruft from the earlier
festcodebase. - Added
.npmignoreto exclude development files from the published package (#5).
- README and config documentation updates; build-script cleanup.
First "stable" 1.0 release after the initial rename/rewrite.
- Added MIT license.
- Fixed the
testcommand; general readme/logo polish.
Rapid feature-buildout release right after the TypeScript rewrite.
- Renamed the project from
festtospectest(including the CLI symlink path). - Added rate limiting (requests-per-second) and a
bombardhelper for concurrent test expansion. - Added
randomize,bail,happy-path filtering, per-testtimeoutoverrides, and snapshot options. - Added a script to generate an OpenAPI schema from suites; added a
user-agentoption and support for a caller-provided request ID. - Refactored server-helper functions into a
Serverclass; switched CLI arg parsing to Commander. - Made process-kill logic platform-agnostic, fixed the rate limiter hanging, and prevented a bug that nullified requests.
- Added build/test badges; simplified project-root detection.
First tagged release. Converted the original fest prototype into a TypeScript CLI with CI, pointed the example suite at jsonplaceholder.typicode.com, and did initial cleanup (#1).
- Initial commit (
4457ee6, 2025-07-07) — project scaffolded asfest, later renamed tospectestbefore thev0.1.0tag.
- npm's published-versions list additionally shows
1.0.3and1.0.6, but no correspondingpackage.jsonbump commit exists in git history for either — likely a version bump published directly without a distinct commit being preserved through thefest→spectestrename. No changelog entry could be reconstructed for them from git alone.