Skip to content

Release: Dream Test v2 (new runner + reporting model)#12

Merged
dcrockwell merged 3 commits intomainfrom
develop
Dec 27, 2025
Merged

Release: Dream Test v2 (new runner + reporting model)#12
dcrockwell merged 3 commits intomainfrom
develop

Conversation

@dcrockwell
Copy link
Copy Markdown
Contributor

Why

This release brings a cleaner, more consistent Dream Test experience: easier-to-read output during and after runs, deterministic results under parallel execution, and documentation/examples that match the real API.

What

  • A new reporting model: live progress while tests run, then a deterministic, traversal-ordered results report at the end.
  • Cleaner configuration: pipe-friendly new() + toggles across the runner/reporters.
  • Better failure output: optional colored BDD output and richer failure details driven by structured data.
  • Parallel-execution correctness fixes: timeouts/crashes preserve the original test identity; progress counts stay accurate even when hooks fail.
  • Docs + examples refreshed: publish-ready guides, snippet-backed examples, and a dedicated failure showcase project (intentionally failing) for visually validating reporters.

How

  • The runner emits events during execution and renders progress in completion order.
  • Final reports are produced from the end-of-run traversal-ordered results list.
  • Reporter modules were refactored into focused, end-of-run formatters with new() and pipe-friendly options.

Full commit messages included in this release PR

  • a6fc3fdf6ca7f32ae73f781f752b1ea2ee59479f — Merge PR Cleaner test output, clearer APIs, and publish-ready docs #11: "Cleaner test output, clearer APIs, and publish-ready docs"
  • f295c79f87d798f85cd360a3b43c4db87b5cff90 — "refactor: dream_test v2 api + reporters + docs overhaul" (see commit body for full Why/What/How)

dcrockwell and others added 2 commits December 27, 2025 06:07
## Why This Change Was Made
- The framework needed a consistent, pipe-friendly public API across runners, reporters, Gherkin, and matchers.
- Reporting needed a deterministic, parallel-safe model: live progress during execution, and traversal-ordered final results at the end.
- Docs/examples needed to be “publish quality” and aligned with the actual API (no stale snippets, no imaginary hooks).

## What Was Changed
- Runner/reporting architecture:
  - Introduced an event-driven runner model with a dedicated progress reporter during execution and results reporters rendered at end-of-run.
  - Added configurable output sinks (`runner.output(Output(out: ..., error: ...))`) and `runner.silent()`.
  - Ensured `RunFinished` carries traversal-ordered results for deterministic end reports.
- Reporters:
  - Refactored BDD + JSON into end-of-run results reporters with `new()` + pipe-friendly toggles.
  - Added `bdd.color()` and improved failure rendering using structured failure payloads (not string pattern matching).
  - Added/updated progress reporter to consume events safely and stay accurate under hook failures.
- Parallel execution correctness:
  - Fixed timeout/crash attribution to preserve original test metadata.
  - Fixed progress accounting when tests are synthesized (e.g. `before_all` failure cascades).
- Gherkin:
  - Standardized step registry creation to `steps.new()` (renamed from `new_registry`) and updated all references.
  - Improved Gherkin scenario formatting and examples (inline DSL + `.feature` files).
- Examples and docs:
  - Added `examples/failure_showcase` (intentionally failing demo project) and wired `make all` to run it without failing the whole build.
  - Updated all narrative docs, README, and snippet-backed examples to match the new v2 API and reporting model.
  - Added a “Custom reporters” section explaining current extensibility (output routing + post-run formatters).
- Repo hygiene:
  - Removed tracked `.cursor/plans/*` files from git (plans are ignored and should not be versioned).

## Note to Future Engineer
- The failure showcase is *supposed* to fail. If it ever turns green, either someone “fixed” the demo or reality has finally stopped producing bugs.
- If you change reporter extensibility, update the docs first—future-you deserves fewer archeological digs through commit history.
Cleaner test output, clearer APIs, and publish-ready docs
@dcrockwell dcrockwell self-assigned this Dec 27, 2025
## Why This Change Was Made
- Our declared dependency ranges had drifted from what we actually test and can confidently support.
- We want dependency constraints to reflect reality so downstream users don’t get broken resolutions.
- The v2 release date should reflect the actual release day.

## What Was Changed
- Updated dependency constraints in gleam.toml to match dream_rangefinder-tested minimums and tightened gleam_stdlib to < 1.0.0.
- Removed unused dev-dependency gleeunit (Dream Test runs via its own explicit runner).
- Updated manifest.toml via normal dependency resolution.
- Updated 2.0.0 date in CHANGELOG.md and releases/release-2.0.0.md to 2025-12-27.
- Regenerated COMPATIBILITY.md (and supporting reports) to match the current constraints.

## Note to Future Engineer
- dream_rangefinder reflects the world as of the day you ran it; rerun when deps release new versions.
- If you ever feel tempted to set stdlib to < 2.0.0 “because it’s fine,” please enjoy debugging someone else’s dependency graph on a Friday. 🥲
@dcrockwell dcrockwell merged commit 345929f into main Dec 27, 2025
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.

1 participant