package windtrap
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
One library for all your OCaml tests
Install
dune-project
Dependency
Authors
Maintainers
Sources
windtrap-0.1.0.tbz
sha256=2241b294b24ed5d56ea8b834d296e6fabc5dbdd924a89f51c14b00da66c50a25
sha512=c6cf83028bb09d0f2afeb38fce6825620873a6bbeff4b5b77e928bc2fc69262d49fe341961cba2b451c9dc9bd0df414f06bb73020c7131b125c6abd85c6bc5dd
doc/CHANGES.html
Changelog
All notable changes to this project will be documented in this file.
- Only document user-facing changes (features, bug fixes, performance improvements, API changes, etc.)
- Add new entries at the top of the appropriate section (most recent first)
[0.1.0] - 2026-02-13
Windtrap is an all-in-one OCaml testing framework that unifies unit tests, property-based tests, snapshot tests, and expect tests under a single API. Instead of juggling multiple testing libraries, Windtrap gives you one cohesive package with a PPX for inline expect tests (ppx_windtrap).
- Unit tests with combinators, tags, skip, brackets, and timeouts.
- Property-based testing with configurable seeds and shrinking.
- Snapshot testing with automatic file management and diffing.
- Inline expect tests via
ppx_windtrapwith automatic correction. - CLI test runner with filtering, verbosity, and color support.
- Test coverage reporting with
bisect_ppxintegration.
Acknowledgments
Windtrap builds on ideas and code from several OCaml projects:
- Alcotest by Thomas Gazagnaire — test structure and runner design
- Craig Ferguson's Alcotest PRs (#294, #247) — API design, subcomponent diffing, and Levenshtein distance (ISC)
- QCheck2 by Simon Cruanes et al. — generator design and integrated shrinking (BSD 2-Clause)
- ppx_expect and ppx_inline_test by Jane Street — expect test paradigm and dune integration
- Bisect_ppx by Anton Bachin et al. — coverage instrumentation and runtime (MIT)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page