Skip to content

Releases: olgerd007/XBullet.EasyTesting

v1.3.0

Choose a tag to compare

@olgerd007 olgerd007 released this 22 Oct 22:00
604639c

Added

  • TestDurableWorkflow.WithRetries simulates 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.WithSerialization optionally snapshots inputs, results, events, and custom
    status with the SDK JSON converter or a caller-supplied DataConverter. 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.Entities metadata
    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.
  • TestDurableWorkflow connects 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.
  • TestDurableTaskClient records 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.
  • TestOrchestrationContext supports 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.
  • ShouldMatchSnapshot extensions 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

Choose a tag to compare

@olgerd007 olgerd007 released this 21 Oct 15:45
3c67144

Added

  • Added AzureFunctionTestFactory<TEntryPoint> to reuse a Functions application's Program.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

Choose a tag to compare

@olgerd007 olgerd007 released this 10 Oct 05:48
a048bd3

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:

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

Choose a tag to compare

@olgerd007 olgerd007 released this 05 Oct 06:24
ac72b2e

Added

  • SnapshotSettings.ScrubbingUrlPathGuids() stabilizes GUID path segments in JSON Url members
    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

Choose a tag to compare

@olgerd007 olgerd007 released this 04 Oct 17:20
b585c32

Added

  • Azure Functions hosts now support registered scenario resources, serialized scenario scopes,
    shared failure diagnostics, and the FunctionScenario and FunctionScopedTest bases. 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.AssertAsync and Eventually.WaitUntilAsync for
    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 remains Testing.
    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

Full changelog · Release PR #40

XBullet.EasyTesting v1.0.17

Choose a tag to compare

@olgerd007 olgerd007 released this 01 Oct 17:17
179622a

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

Choose a tag to compare

@olgerd007 olgerd007 released this 30 Sep 19:45
9c753a2

Added

  • Fluent scenarios can attach delegating handlers with TestScenarioBuilder.WithHandler, and XBullet.EasyTesting.Snapshots.Http provides SnapshotScenario() for automatic pre-transport request capture with HttpExchangeRecorder.
  • Built-in response, controller, exchange, and outbound HTTP snapshot assertions accept inline configuration callbacks while retaining their existing object-based overloads.
  • TestScenarioBuilder.WithJsonOptions applies one JSON convention to scenario request helpers, while PostJson and PutJson accept per-request JsonSerializerOptions overrides.
  • Fluent scenarios automatically use the hosted application's MVC JSON options for PostJson and PutJson, 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

Choose a tag to compare

@olgerd007 olgerd007 released this 29 Sep 16:49
0d84f14

What's Changed

Full Changelog: v1.0.14...v1.0.15

v1.0.14

Choose a tag to compare

@olgerd007 olgerd007 released this 27 Sep 14:36
1d4b337

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

Choose a tag to compare

@olgerd007 olgerd007 released this 26 Sep 12:52
8276332

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(...), and ExtendGlobal(...) 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