Repository navigation
Releases: olgerd007/XBullet.EasyTesting
Release list
v1.3.0
Added
TestDurableWorkflow.WithRetriessimulates SDK retry policies and handlers for activities and
children with manual time, bounded attempts, failure filters, and attempt diagnostics. Fresh
scopes and inspectable child retry IDs support failure/recovery tests.TestDurableTaskSequence<TResult>
supplies ordered results and failures with explicit exhaustion and reset. See the
retry guide.TestDurableWorkflow.WithSerializationoptionally snapshots inputs, results, events, and custom
status with the SDK JSON converter or a caller-suppliedDataConverter. Typed reads deserialize
independent values, metadata reuses captured payloads, and converter failures remain observable.
Direct assignment remains the default. See the
workflow guide.- Added opt-in
SnapshotSettings.NormalizeStringLineEndings()to compare JSON string values
across Windows and Linux. Decoded CRLF and CR become LF in actual and existing verified JSON
without rewriting reviewed files; literal backslash sequences and trailing newlines within
values are preserved. Reusable and global defaults retain the setting. See
snapshot line endings. - Durable Entity test helpers record orchestrator calls/signals, provide
client.Entitiesmetadata
fixtures and explicit query/cleanup handlers, and execute real SDK entity implementations against
serialized test-controlled state. Scenario diagnostics/reset include entity client interactions.
See the entity guide. TestDurableWorkflowconnects client scheduling to named orchestrators, activities, children,
and external events through host middleware and isolated DI scopes. Result and metadata waits,
manual context time, scenario diagnostics, and bounded cancellation/drain cleanup support
application workflow tests. See the connected workflow guide.TestDurableTaskClientrecords orchestration scheduling attempts and supports HTTP starter
tests using the SDK's status-response helpers. Management handlers cover termination, purge,
restart, rewind, and history retrieval. Ordered operation recording, fluent assertions, and
scenario-resource diagnostics/reset support client workflow tests.TestOrchestrationMetadataBuilder
supplies seeded metadata fixtures with typed payloads, status, failure details, and timestamps.
See the Durable client guide.TestOrchestrationContextsupports typed input, instance metadata, replay-aware logging, manually
advanced timers, buffered external events, child orchestration dispatch, and named activity handlers.
Fluent overrides configure metadata, GUID generation, version comparison, and entity stubs;
custom status and continuation requests are recorded for assertions. See the
Durable context guide and
complex orchestration recipes, with the
Azure Functions API reference.ShouldMatchSnapshotextensions support serializable values, inline settings, and named snapshot
variants. See snapshot naming and the
snapshot core API reference.- Added executable examples for complete application workflows, Durable orchestration, and
end-to-end integration flows.
Fixed
- Recorder-backed responses, including
SnapshotScenario()results, accept per-assertion HTTP
exchange options for additional scrubbing, omission, redaction, and format selection. Assertions
preserve the original recording and cannot restore data excluded or redacted during capture. - Durable orchestration tests can create and use replay-safe loggers without requiring a running
Durable runtime.
Upgrade notes
- See the Durable context upgrade guidance
for the new in-memory defaults and explicit control of time, events, and child dispatch. - See the snapshot upgrade guidance for
assertion-time exchange configuration and capture-time redaction limits. - Connected workflow retries, payload serialization, and JSON string line-ending normalization
are opt-in. Standalone contexts and existing snapshot assertions retain their documented defaults.
All XBullet.EasyTesting packages use version 1.3.0 and target .NET 8, 9, and 10.
XBullet.EasyTesting 1.2.1
Added
- Added
AzureFunctionTestFactory<TEntryPoint>to reuse a Functions application'sProgram.cs,
production configuration, and service provider, with final test overrides, function discovery,
bounded startup waits, and factory-owned async disposal. Hosted services remain stopped;
in-process middleware is configured explicitly. See the
Functions factory guide
and Azure Functions API reference.
Fixed
- Functions test factories reject further use after host service disposal fails, while keeping
active-scenario disposal rejections retryable and preserving the original cleanup exception. - Documentation API navigation now opens valid package and namespace pages from the navigation menu.
- Release package validation now runs against the 1.1.0 compatibility baseline when projects
use the SDK's default packaging setting.
Security
- Pinned Aspire's transitive MessagePack dependency to 2.5.303 and the container-test SqlClient
dependency System.Security.Cryptography.Pkcs to 9.0.21 to resolve dependency audit findings.
XBullet.EasyTesting 1.1.0 — Agent skills for Copilot, Claude, and Codex
Agent skills for GitHub Copilot, Claude Code, and Codex
XBullet.EasyTesting 1.1.0 introduces a portable agent kit for applications that use the framework. It includes generic shared instructions and three focused skills:
easytesting-integration-tests: authenticated endpoint tests, host setup, scenario isolation, and response assertions.easytesting-application-boundaries: persistence, outbound HTTP, messaging, telemetry, background work, and specialized dependencies.easytesting-snapshots: actual HTTP and Newtonsoft.Json contracts, complete exchanges, redaction, and baseline review.
The installer preserves existing project instructions, copies self-contained skill folders into each agent's native location, and supports dry runs and explicit conflict replacement. Guidance respects the consuming project's architecture, test runner, and installed framework version.
Start with the agent skills guide and installation instructions. The kit is distributed with the source; installing the NuGet packages does not install agent guidance.
Dependency updates
- Aspire.Hosting.Testing: 13.5.4 → 13.6.0.
- Verify.XunitV3: 31.24.0 → 31.28.0.
- Azure.Storage.Blobs in the test projects: 12.29.2 → 12.30.0.
- The Azurite blob smoke test uses service API 2026-06-06 to match the pinned Azurite 3.37.0 image.
All framework packages use version 1.1.0 and continue to target .NET 8, .NET 9, and .NET 10.
See the 1.1.0 changelog and merged PR #45.
v1.0.19
Added
SnapshotSettings.ScrubbingUrlPathGuids()stabilizes GUID path segments in JSONUrlmembers
during assertion, including recorder-backed exchanges rendered as JSON, HTTP text, or YAML.
A predicate overload selects GUID segments by zero-based path position or original value.
Hosts, query strings, and fragments are preserved. See
HTTP redaction and URL stability.
Changed
- Exchange snapshot documentation now compares direct and recorder-backed capture, highlights
the guard against separate recorder options during assertion, and shows where to configure
capture options and assertion-time scrubbing. See
exchange option ownership.
v1.0.18
Added
- Azure Functions hosts now support registered scenario resources, serialized scenario scopes,
shared failure diagnostics, and theFunctionScenarioandFunctionScopedTestbases. Original
failures and cancellation tokens survive invocation disposal and scenario cleanup errors. See
Functions scenarios. - Messaging assertions now support route counts, predicate selection, absence checks, exact global
and route sequences, and partial typed payload matching. Collection failures use one consistent
snapshot and include message positions, routes, types, and payloads. See
messaging assertions. - Added framework-independent
Eventually.AssertAsyncandEventually.WaitUntilAsyncfor
background work, with cooperative deadlines, caller cancellation, sequential polling, fake-time
support, and timeout diagnostics retaining the last assertion failure. See
eventual assertions. EasyTestHost.Create<TEntryPoint>().UseEnvironment(environmentName)selects the host environment
before application startup, including for scenario child hosts. The default remainsTesting.
See host environments.Scenario<TEntryPoint>provides reusable domain arrangement, guarded configuration, and
immediate or deferred single-use setup.ScopedTest<TEntryPoint, TFactory>provides a concrete
factory and isolated test runner with cancellation, failure diagnostics, and cleanup. Both bases
are test-framework-independent. See
domain scenarios and scoped tests.
Fixed
- Message diagnostics now derive the count and message list from one snapshot, preventing
inconsistent counts during concurrent publication or reset. See
messaging diagnostics.
Dependencies
- Azure.Core: 1.62.0 → 1.63.0
- Microsoft.DurableTask.Abstractions: 1.24.1 → 1.26.0
- Azure.Messaging.ServiceBus: 7.20.2 → 7.21.0
- StackExchange.Redis: 3.3.0 → 3.3.1
XBullet.EasyTesting v1.0.17
Changed
- Structured member and path scrubbers now preserve values already represented by
{Redacted}, including redacted HTTP header arrays, so security redaction remains authoritative.
See HTTP redaction and URL stability and the full changelog.
v1.0.16
Added
- Fluent scenarios can attach delegating handlers with
TestScenarioBuilder.WithHandler, andXBullet.EasyTesting.Snapshots.HttpprovidesSnapshotScenario()for automatic pre-transport request capture withHttpExchangeRecorder. - Built-in response, controller, exchange, and outbound HTTP snapshot assertions accept inline configuration callbacks while retaining their existing object-based overloads.
TestScenarioBuilder.WithJsonOptionsapplies one JSON convention to scenario request helpers, whilePostJsonandPutJsonaccept per-requestJsonSerializerOptionsoverrides.- Fluent scenarios automatically use the hosted application's MVC JSON options for
PostJsonandPutJson, falling back to minimal-API HTTP JSON options when MVC is not registered. Scenario and per-request options remain explicit overrides.
Validation
- Release build completed with zero warnings and errors.
- 1,003 tests passed across .NET 8, .NET 9, and .NET 10.
- Documentation, external links, dependency audit, package compatibility, and all 26 NuGet artifacts were validated.
Pull request: #38
Full Changelog: v1.0.15...v1.0.16
v1.0.15
What's Changed
- Maintain Dependabot update boundaries by @olgerd007 in #35
- Release v1.0.15 by @olgerd007 in #36
Full Changelog: v1.0.14...v1.0.15
v1.0.14
What's Changed
- Complete v1.0.14 documentation and quality gates by @olgerd007 in #27
Full Changelog: v1.0.13...v1.0.14
v1.0.13
Added
- Opt-in HTTP transcript (
.verified.txt) and YAML (.verified.yaml) formats for complete controller and outbound-stub HTTP exchange snapshots, while JSON remains the default. HttpExchangeSnapshotOptionsDefaults.Global,Create(...), andExtendGlobal(...)for module-wide complete HTTP exchange capture and format conventions.
Changed
- Optimized concurrent rule matching and header capture in
StubHttpMessageHandler, reducing per-request locking and allocations while preserving registration-order matching.
Full Changelog: v1.0.12...v1.0.13