All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- BDD Class
skipannotation support for skipping entire test classes. - Add expectation context support via
expect( value ).withContext( message )that prepends semantic context to all failure messages including negated matchers and custom matchers. - Add collection expectation modes:
expectAny(),expectSome(), andexpectNone()alongside existingexpectAll()with detailed failure summaries including element index/key and pass count reporting. - Add grouped assertions via
$assert.all(),assertAll()that run multiple assertion closures and report every failure at once instead of stopping at the first. - Add new matchers:
toBeTruthy(),toBeFalsy(),toBeSameInstanceAs(),toHaveSize(),toThrowMatching(),toIncludeAll(),toIncludeAny(), andtoIncludeNone(). - Add set expectations:
toBeASet(),toEqualSet(),toBeSubsetOf(),toBeSupersetOf(),toBeDisjointFrom(),toHaveUnion(),toHaveIntersection(),toHaveDifference(), andtoHaveSymmetricDifference()for working with BoxLang Set objects. - Add range expectations:
toBeRange(),toContainValue(),toContainRange(),toBeInRange(),toBeBeforeRange(),toBeAfterRange(),toBeBounded(),toBeUnbounded(),toBeHalfBounded(),toBeIterable(),toBeAscending(),toBeDescending(),toHaveStep(), andtoClampTo()for BoxLang Range objects. - Add data navigator expectations:
toHavePath(),toHavePathValue(),toHavePathType(),toHavePathSatisfying(),path(), andqueryPath()for navigating and asserting against nested BoxLang data structures using dot-notation, array indexes, wildcards, filters, and recursive descent. - Add new assertion BIFs:
$assert.isTruthy(),$assert.isFalsy(),$assert.includesAll(),$assert.includesAny(), and$assert.includesNone().
- Improve matcher failure messages with optional contextual prefix for distinguishing chained expectations.
- Improve
expectAll()failure messages to include pass/fail counts and per-element failure details with index/key context. - Add
docs/whats-new-with-7.0.0.mdrelease page documenting all new assertion and expectation features.
- Fix custom matcher failure messages not routing through the expectation's internal fail method.
7.0.0 - 2026-03-17
6.5.0 - 2026-01-25
6.4.0 - 2025-09-18
6.3.2 - 2025-04-29
- Update the
runrunners so they use the calculated location paths.
6.3.1 - 2025-04-01
- Fixed a typo in BaseReporter
6.3.0 - 2025-02-25
6.2.1 - 2025-02-06
6.2.0 - 2025-01-31
6.1.0 - 2025-01-28
6.0.1 - 2024-12-05
6.0.0 - 2024-09-27
- TESTBOX-391 MockBox converted to script
- TESTBOX-392 BoxLang classes support
- TESTBOX-393 New environment helpers to do skip detections or anything you see fit: isAdobe, isLucee, isBoxLang, isWindows, isMac, isLinux
- TESTBOX-394 new
test(), xtest(), ftest()alias for more natuarl testing - TESTBOX-397 debug() get's two new arguments: label and showUDFs
- TESTBOX-398 DisplayName on a bundle now shows up in the reports
- TESTBOX-399 xUnit new annotation for @DisplayName so it can show instead of the function name
- TESTBOX-401 BoxLang CLI mode and Runner
- TESTBOX-402 New matcher: toHaveKeyWithCase()
- TESTBOX-403 Assertions: key() and notKey() now have a CaseSensitive boolean argument
- TESTBOX-289 showUDFs = false option with debug()
- TESTBOX-331 TextReporter doesn't correctly support testBundles URL param
- TESTBOX-395 adding missing focused argument to spec methods
- TESTBOX-396 Generating a repeatable id for specs to track them better in future UIs
- TESTBOX-123 If test spec descriptor contains a comma, it can not be drilled down to run that one spec directly
- TESTBOX-338 describe handler in non-called test classes being executed
- TESTBOX-400 Drop Adobe 2018 support