Skip to content

Document TestBox 7.1.0 features and changes - #56

Merged
lmajano merged 2 commits into
v7.xfrom
claude/testbox-release-prep-upftuw
Sep 10, 2026
Merged

lmajano merged 2 commits into
v7.xfrom
claude/testbox-release-prep-upftuw

Conversation

@lmajano

@lmajano lmajano commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Description

Documents the 7.1.0 release. Before this PR the book had no coverage of any 7.1.0 feature — not one of withContext, expectAny, assertAll, toBeTruthy, toHaveSize, toBeASet, toBeRange or toHavePath appeared anywhere.

The release page alone would leave the new matchers undiscoverable in the reference sections, so the new APIs are also woven into the pages people actually reach for.

Companion to Ortus-Solutions/TestBox#209, which removes the docs/ folder from the framework repo. The changelog there links to the release page added here, so this should merge for that link to resolve.

New pages

Page Covers
readme/release-history/whats-new-with-7.1.0.md Full release notes
digging-deeper/expectations/set-expectations.md BoxLang Set matchers
digging-deeper/expectations/range-expectations.md BoxLang Range matchers
digging-deeper/expectations/data-navigator.md Path-based assertions on nested structures

The three reference pages are registered in SUMMARY.md under Expectations, and the release page under Release History.

Updated pages

  • digging-deeper/expectations/README.mdwithContext() and the four collection expectation modes, with a table of what each mode passes on
  • digging-deeper/expectations/matchers.md — the eight new matchers added to the reference block, each with a worked section, plus links to the three new families
  • digging-deeper/assertions/README.mdisTruthy/isFalsy, includesAll/Any/None, and grouped assertions via $assert.all()
  • getting-started/testbox-xunit-primer/assertions.mdassertAll() for the xUnit style
  • digging-deeper/expectations/custom-matchers.md — context now flows through custom matcher failures
  • getting-started/testbox-bdd-primer/skipping-specs-and-suites.md — the class-level skip annotation
  • mocking/mockbox/mocking-methods/usdargs-method.md — struct-order matching and Set/Range support
  • digging-deeper/code-coverage/coverageEnabled now defaults to false
  • getting-started/test-bundles.mdisLucee() no longer returns true on BoxLang
  • readme/release-history/README.md — a 7.1 paragraph under the 7.x heading

Corrections worth flagging

Three things were wrong or missing beyond a straight port:

  1. The source release page omitted several 7.1.0 changes. The draft in the framework repo covered only the expectation features. The class-level skip, the MockBox changes and every bug fix are added here, under a new Bug Fixes and Improvements section.
  2. Its summary table was missing every Range matcher. All fourteen are now listed.
  3. The coverage docs stated "Code coverage is enabled by default." The default flip made that wrong, so the page now says disabled, shows the opt-in param, and carries an upgrade hint. getting-started/test-bundles.md also had a isLucee typo (missing parens) which is fixed in passing.

Verification

  • Every SUMMARY.md target resolves to a file on disk
  • Every relative .md link in the touched pages resolves
  • All 25 new APIs appear in at least one page outside the release notes

Prose follows the book's existing voice, and BoxLang-only features carry {% hint %} callouts noting the engine requirement — the Range and Data Navigator matchers are guarded on CFML engines, and Data Navigator throws TestBox.BoxLangFeatureNotAvailable there.

🤖 Generated with Claude Code

https://claude.ai/code/session_0126haQX77C4MLiK3fxwQ59A


Generated by Claude Code

Adds the 7.1.0 release page and weaves the new APIs into the reference
sections so they are discoverable outside the release notes.

New pages:
- readme/release-history/whats-new-with-7.1.0.md
- digging-deeper/expectations/set-expectations.md
- digging-deeper/expectations/range-expectations.md
- digging-deeper/expectations/data-navigator.md

Updated pages:
- expectations README: withContext() and the collection expectation modes
- matchers: the eight new matchers plus pointers to the new families
- assertions README: isTruthy/isFalsy, includesAll/Any/None, grouped assertions
- xunit primer assertions: assertAll()
- custom matchers: context now flows through custom matcher failures
- skipping specs and suites: class-level skip annotation
- mockbox $args(): struct-order matching plus Set/Range support
- code coverage: coverageEnabled now defaults to false
- test bundles: isLucee() no longer returns true on BoxLang

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0126haQX77C4MLiK3fxwQ59A
The book already uses {% tabs %} with BoxLang first and CFML second
(README.md, overview.md, test-bundles.md), but the 7.1.0 pages were
written as plain ```javascript blocks with no tabs. This brings them in
line.

Dual-engine examples are now tabbed, BoxLang first:
- matchers, custom matchers, expectations README
- assertions README and the xUnit primer
- class-level skip annotation
- MockBox $args() struct matching

Tabs are grouped per section rather than per snippet, so a two-line
example does not become a twelve-line tab group.

BoxLang-only pages (Set, Range, Data Navigator) keep their hint callouts
and gain no tabs, since there is no CFML side to show. Their fences move
from javascript to java and their CFML-style semicolons are dropped.

The release page's BoxLang-only notes move from plain blockquotes to
{% hint %} callouts, matching the rest of the book.

Adds CLAUDE.md recording the convention: BoxLang is the preferred engine,
BoxLang-only features get hint callouts, dual-engine examples get tabs
with BoxLang first, plus the class/component, semicolon and fence-language
differences.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0126haQX77C4MLiK3fxwQ59A
@lmajano
lmajano merged commit 98654b2 into v7.x Sep 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants